Tại sao tôi không thể sử dụng super
để nhận được một phương thức của lớp học cấp cao?Python: Tại sao tôi không thể sử dụng `super` trên một lớp học?
Ví dụ:
Python 3.1.3
>>> class A(object):
... def my_method(self): pass
>>> class B(A):
... def my_method(self): pass
>>> super(B).my_method
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
super(B).my_method
AttributeError: 'super' object has no attribute 'my_method'
(Tất nhiên đây là một trường hợp tầm thường mà tôi chỉ có thể làm A.my_method
, nhưng tôi cần này cho một trường hợp của kim cương thừa kế.)
Theo super
's tài liệu, nó có vẻ như những gì tôi muốn nên có thể. Đây là tài liệu hướng dẫn super
's: (tôi nhấn mạnh)
super()
-> giống nhưsuper(__class__, <first argument>)
super(type)
-> siêu đối tượng cởi
super(type, obj)
-> ràng buộcsuper
đối tượng; yêu cầuisinstance(obj, type)
siêu (loại, loại2) -> liên kết siêu đối tượng; đòi hỏi issubclass (type2, loại)
[ví dụ không liên quan redacted]
tôi đã xóa câu trả lời của tôi - Tôi đã nhận các lỗi tương tự. Rất lạ, sẽ nhìn vào nó nhiều hơn một chút. –