打印超类中的所有子类和子类中的所有超类

2024-09-30 12:12:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在超类中打印所有子类,在子类中打印所有超类:

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 SuperClasses

SuperClass有Print打印继承的所有类,Sub有Print方法打印所有超类。怎么做到的?在


Tags: selfmydefall子类areclassclasses
1条回答
网友
1楼 · 发布于 2024-09-30 12:12:28

Python类有三个属性在这里有帮助:

  • ^{};返回类的所有子类的方法。

  • ^{},当前类的直接父类的元组。

  • ^{},当前类层次结构中包含所有类的元组。在那个元组中找到当前的类对象,并且后面的所有对象都是一个父类,直接或间接地。

使用这些工具可以:

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]))

演示:

^{pr2}$

相关问题 更多 >

    热门问题