我想在SuperClass中打印所有的subClasses,在subClasses中打印所有的SuperClasses:
class SuperClass():
def Print(self):
print('my sub classes are : ')
#print all childs
class Sub1(SuperClass,...):
def Print(self):
print('My parents are :')
#print all SuperClasses
class Sub2(SuperClass,...):
def Print(self):
print('My parents are :')
#print all SuperClassesSuperClass有打印所有继承类的打印,Sub有打印所有SuperClasses的打印方法。怎么做到的?
发布于 2015-08-31 09:28:05
Python类有三个属性在这里提供帮助:
class.__subclasses__();返回类的所有子类的方法。class.__bases__是当前类的直接父类的元组。class.__mro__,一个包含当前类层次结构中所有类的元组。在这个元组中查找当前类对象,下面的所有内容都是一个父类,直接或间接。使用这些可以提供:
class SuperClass(object):
def print(self):
print('my sub classes are:', ', '.join([
cls.__name__ for cls in type(self).__subclasses__()]))
class Sub1(SuperClass):
def print(self):
print('My direct parents are:', ', '.join([
cls.__name__ for cls in type(self).__bases__]))
all_parents = type(self).__mro__
all_parents = all_parents[all_parents.index(Sub1) + 1:]
print('All my parents are:', ', '.join([
cls.__name__ for cls in all_parents]))演示:
>>> SuperClass().print()
my sub classes are: Sub1
>>> Sub1().print()
My direct parents are: SuperClass
All my parents are: SuperClass, objecthttps://stackoverflow.com/questions/32307842
复制相似问题