Discuss / Python / 多重继承,方法与属性到底是继承那个【测出了“后爸”的同名属性是什么】

多重继承,方法与属性到底是继承那个【测出了“后爸”的同名属性是什么】

Topic source

栋能哥哥

#1 Created at ... [Delete] [Delete and Lock User]
class demo1(object):
    def __init__(self):
        print("1...")
        self.__name = "demo1"

    def get_name(self):
        return self.__name

    def print(self):
        # print(self.__name) # 直接报错
        print(dir(self)) # 查看属性与方法
        print(self._demo2__name) # 有效
        print("1...print...") # 表示执行了该方法

class demo2(object):
    def __init__(self):
        print("2...")
        self.__name = "demo2"

    def get_name(self):
        return self.__name

class demo(demo2,demo1): #和demo1与demo2的顺序有关,demo继承demo2的__name
    pass
d = demo()
print(d.get_name())
d.print()
# 结果:
# 2..\
# demo2
# [....]
# demo2
# 1...print...

栋能哥哥

#2 Created at ... [Delete] [Delete and Lock User]

如果要探究父对象同方法,会使用那个?只需要在demo1与demo2中的get_name都打印即可知道结果。 结果是:继承第一个父对象的。如果第一个父对象没有,就会使用第二个父对象的同方法


  • 1

Reply