3

给定 aclass和其他直接或间接扩展它的类。有没有办法获得所有直接扩展原始类的类。

class Alpha(object):
    @classmethod
    def get_derivatives(cls):
        return [Beta, ] # when called from Alpha
        return [] # when called from Beta

class Beta(Alpha):
    pass

我猜有一些并发症,或者完全不可能。必须有一些关于派生类在哪里定义的规范,这会使事情变得棘手......

我最好的选择是将派生类硬编码到基类中吗?

4

1 回答 1

5

也许您正在寻找__subclasses__方法

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'>]
[]
于 2012-12-23T20:11:27.973 回答