我希望能够遍历给定类的所有基类,包括类本身,包括直接和间接的基类.如果您有一个元类来检查其所有基础的内部Options类,这将非常有用.
为此,我写了以下内容:
def bases(cls):
yield cls
for direct_base in cls.__bases__:
for base in bases(direct_base):
yield base
Run Code Online (Sandbox Code Playgroud)
是否有标准功能为我这样做?
Amb*_*ber 13
在方法分辨率顺序(MRO)中,有一种方法可以全部返回它们:inspect.getmro.看这里:
http://docs.python.org/library/inspect.html#inspect.getmro
它将它们作为元组返回,然后您可以在一个循环中迭代:
import inspect
for base_class in inspect.getmro(foo):
# do something
Run Code Online (Sandbox Code Playgroud)
即使你有钻石图案的继承,这只有一次产生每个基类的副作用.
| 归档时间: |
|
| 查看次数: |
1707 次 |
| 最近记录: |