【发布时间】:2015-06-09 21:42:45
【问题描述】:
将祖父母添加到 MRO 是否有任何副作用?目的是我想通过使用grandparent.__subclasses__()来获得孙子课程@
class A(object):
def work(self):
print 'A'
class B(A):
def work(self):
print 'B'
super(B, self).work()
class C(B):
def work(self):
print 'C'
super(C, self).work()
class D(B, A):
def work(self):
print 'D'
super(D, self).work()
>>> C().work()
C
B
A
>>> D().work()
D
B
A
>>> A.__subclasses__()
[<class 'test.B'>, <class 'test.D'>]
【问题讨论】:
-
副作用是什么意思?您可以通过检查
A.__subclasses__()中每个条目的 MRO 来确定孙子。 -
“将祖父母添加到 MRO”是什么意思?
-
@user2357112
class D(B, A): -
@SimeonVisser 如果您不知道
C的存在,您将如何检查每个孙子。A.__subclasses__()只返回直接子代。 -
广度优先搜索。继续在子类上调用
__subclasses__,直到触底。
标签: python python-mro