给定一个继承自抽象类的类,我希望能够获得它的所有子类,但是是从类本身中获得的。你知道吗
我成功地创建了一个@classmethod
这样做:
>>> Eukaryota.get_subtypes()
[<class '__main__.Plantae'>, <class '__main__.Fungi'>]
但是有没有一种方法可以使用@property
或者通过class属性来实现呢?你知道吗
>>> Eukaryota.subtypes
[<class '__main__.Plantae'>, <class '__main__.Fungi'>]
(似乎属性只针对类的入口,而不是类本身。)
下面是一个带有@classmethod
(使用分类法)的:
from abc import ABCMeta, abstractmethod
class Kingdom(object):
__metaclass__ = ABCMeta
@classmethod
@abstractmethod
def get_subtypes(cls):
pass
class Prokaryota(Kingdom):
@classmethod
def get_subtypes(cls):
return cls.__subclasses__()
class Eukaryota(Kingdom):
@classmethod
def get_subtypes(cls):
return cls.__subclasses__()
class Bacteria(Prokaryota):
pass
class Plantae(Eukaryota):
pass
class Fungi(Eukaryota):
pass
您可以使用descriptor class:
所以
Eukaryota.subtypes
会返回:相关问题 更多 >
编程相关推荐