首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SubClass中打印SuperClass中的所有SuperClass,在SubClass中打印所有SuperClass

在SubClass中打印SuperClass中的所有SuperClass,在SubClass中打印所有SuperClass
EN

Stack Overflow用户
提问于 2015-08-31 09:20:52
回答 1查看 1.1K关注 0票数 0

我想在SuperClass中打印所有的subClasses,在subClasses中打印所有的SuperClasses:

代码语言:javascript
复制
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有打印所有继承类的打印,Sub有打印所有SuperClasses的打印方法。怎么做到的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-31 09:28:05

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

  • class.__subclasses__();返回类的所有子类的方法。
  • class.__bases__是当前类的直接父类的元组。
  • class.__mro__,一个包含当前类层次结构中所有类的元组。在这个元组中查找当前类对象,下面的所有内容都是一个父类,直接或间接。

使用这些可以提供:

代码语言:javascript
复制
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]))

演示:

代码语言:javascript
复制
>>> SuperClass().print()
my sub classes are: Sub1
>>> Sub1().print()
My direct parents are: SuperClass
All my parents are: SuperClass, object
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32307842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档