给定class
和其他直接或间接扩展它的类。有没有办法让所有类直接扩展原始类。
class Alpha(object):
@classmethod
def get_derivatives(cls):
return [Beta, ] # when called from Alpha
return [] # when called from Beta
class Beta(Alpha):
pass
我猜测有一些并发症或完全不可能。必须有一些关于定义派生类的位置的规范,这会使事情变得棘手......
我最好的选择是将派生类硬编码到基类中吗?
答案 0 :(得分:5)
也许您正在寻找__subclasses__
method:
class Alpha(object):
@classmethod
def get_derivatives(cls):
return cls.__subclasses__()
class Beta(Alpha):
pass
print(Alpha.get_derivatives())
print(Beta.get_derivatives())
产量
[<class '__main__.Beta'>]
[]