Tôi có một lớp học siêu hạng với nhiều lớp khác. Tôi muốn biết (trong init() của siêu lớp học của tôi nếu lớp con đã ghi đè một phương pháp cụ thểLàm thế nào để phát hiện quá tải phương thức trong các lớp con trong python?
Tôi cố gắng để thực hiện điều này với một phương pháp học, nhưng kết quả là sai:.
class Super:
def __init__(self):
if self.method == Super.method:
print 'same'
else:
print 'different'
@classmethod
def method(cls):
pass
class Sub1(Super):
def method(self):
print 'hi'
class Sub2(Super):
pass
Super() # should be same
Sub1() # should be different
Sub2() # should be same
>>> same
>>> different
>>> different
có cách nào cho một siêu lớp để biết nếu một sub-class đã ghi đè một phương pháp?
Could bạn nói một vài từ về * tại sao * bạn muốn làm điều đó? – NPE
Không có gì đến với tâm trí ngay lập tức, nhưng nếu bạn bao gồm docstrings cho các phương pháp của bạn, sau đó họ nhận được ghi đè khi phương pháp được ghi đè. Do đó, bạn có thể theo dõi nó với 'MyClass.methodname .__ doc__'.Nhưng tôi thấy giải pháp này rất hack, đó là lý do tại sao tôi không đăng nó như là một câu trả lời – inspectorG4dget
Về cơ bản tôi muốn có siêu lớp có các phương thức này được định nghĩa là 'pass' và có một phương thức riêng biệt (thực sự __init__) gọi những chức năng này. Tôi muốn có init đưa vào báo cáo in nói rằng chúng tôi đang bắt đầu hoặc kết thúc chức năng, nhưng nếu chức năng đó vẫn còn null, các báo cáo này nhìn ra khỏi vị trí, và tôi muốn làm đi với họ. – Brian