2012-12-23 132 views
3

给定class以及其他直接或间接扩展它的类。有没有办法让所有的类直接扩展原来的类。Python继承 - 从基类到派生类

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

class Beta(Alpha): 
    pass 

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

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

回答

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'>] 
[] 
+0

那样子正是我需要的,谢谢。这包括当前导入的每个课程,还是包含哪些课程? – Mark

+0

'cls .__ subclasses__'将列出从'cls'派生的所有类(已定义)。 (请注意'__subclasses__'是一种可用于新风格类(即从'object'派生的类)的方法,这对于传统类不适用。) – unutbu