EDIT2: Cảm ơn tất cả vì sự giúp đỡ của bạn! EDIT: khi thêm @staticmethod, nó hoạt động. Tuy nhiên tôi vẫn tự hỏi tại sao tôi nhận được một loại lỗi ở đây.gọi hàm từ lớp trong python - cách khác
Tôi vừa mới bắt đầu OOPS và hoàn toàn mới với nó. Tôi có một câu hỏi rất cơ bản về những cách khác nhau mà tôi có thể gọi một hàm từ một lớp. Tôi có một tập tin testClass.py với mã:
class MathsOperations:
def __init__ (self, x, y):
self.a = x
self.b = y
def testAddition (self):
return (self.a + self.b)
def testMultiplication (self):
return (self.a * self.b)
tôi kêu gọi lớp này từ một tập tin gọi là main.py với đoạn mã sau:
from testClass import MathsOperations
xyz = MathsOperations(2, 3)
print xyz.testAddition()
này hoạt động mà không cần bất kỳ vấn đề. Tuy nhiên, tôi muốn sử dụng lớp theo cách đơn giản hơn nhiều.
Tôi hiện đã đặt mã sau vào tệp testClass.py. Tôi đã bỏ chức năng init lần này.
class MathsOperations:
def testAddition (x, y):
return x + y
def testMultiplication (a, b):
return a * b
gọi điều này bằng cách sử dụng;
from testClass import MathsOperations
xyz = MathsOperations()
print xyz.testAddition(2, 3)
tính năng này không hoạt động. Ai đó có thể giải thích những gì đang xảy ra sai trong trường hợp 2? Làm thế nào để sử dụng lớp học này?
Các lỗi tôi nhận được là "Lỗi Loại: testAddition() có chính xác 2 đối số (3 nhất định)"
vì vậy thẻ @staticmethod tự động đặt trong tham số tự? –
nếu bạn sử dụng @staticmethod, bạn có thể sử dụng lớp mà không khai báo biến đầu tiên chẳng hạn, trong trường hợp này nếu bạn cố gắng sử dụng MathOperation.testAddtion (2,3), nó cung cấp cho bạn lỗi "TypeError: unbound method" –
Không, trình trang trí staticmethod loại bỏ sự cần thiết cho tham số tự. –