Vì vậy, tôi có một tình huống như thế này.Phương thức cha mẹ gọi Python Nhiều thừa kế
class A(object):
def foo(self, call_from):
print "foo from A, call from %s" % call_from
class B(object):
def foo(self, call_from):
print "foo from B, call from %s" % call_from
class C(object):
def foo(self, call_from):
print "foo from C, call from %s" % call_from
class D(A, B, C):
def foo(self):
print "foo from D"
super(D, self).foo("D")
d = D()
d.foo()
Kết quả của mã là
foo from D
foo from A, call from D
Tôi muốn gọi tất cả các phương pháp phụ huynh, trong trường hợp này, phương pháp foo, từ D
lớp mà không sử dụng siêu ở lớp cha mẹ như A
. Tôi chỉ muốn gọi siêu từ lớp D
. Lớp học A
, B
và C
giống như lớp mixin và tôi muốn gọi tất cả phương thức foo từ D
. Làm thế nào tôi có thể đạt được điều này?
Đây là một chút sơ sài ... Nếu bây giờ bạn có hai lớp mà cả hai đều kế thừa từ D và sau đó là một lớp khác thừa kế từ cả hai? Bây giờ 'foo' sẽ gọi 'A.foo' hai lần. – mgilson
Hoặc điều gì xảy ra nếu 'B.foo' không tồn tại? Và cuối cùng, tôi nghĩ rằng nó nên là 'cls.foo (self)', không phải 'cls(). Foo()' – mgilson
@mgilson Sau đó, chúng ta phải sử dụng 'mro'? Và đó không phải là phương pháp lớp, phải không? Vì vậy, tôi đã phải tạo ra các đối tượng để gọi cho họ. – thefourtheye