这是原博客主人的问题,经过分析,可以看出,问题不难,无非是 博主 同时 调用了两次 super() 方法,又因为 博主的 Manager 类 同时继承了两个父类,又因为这两个父类同时有__init__方法,所以当博主两次都写 super的时候,python解释器不知道应该执行哪一个父类中的 __init__方法,导致报错。
在这里,我写了一个解决办法,请看图片:
博主可以 第一个用 super方法调用父类中的 __init__方法,但是第二个调用的父类,必须指明才行,这里必须用 Customor 这个类名区分。下面是程序执行成功后的效果图:
下面是具体完整的代码:
class Employee:
def __init__(self, salary):
self.salary = salary
def work(self):
print('普通员工正在写代码,工资是:',self.salary)
class Customer:
def __init__(self, favorite, address):
self.favorite = favorite
self.address = address
def info(self):
print('我是一个顾客,爱好是:%s,地址是:%s' % (self.favorite, self.address))
class Manager(Employee, Customer):
def __init__(self, salary, favorite, address):
Customer.__init__(self, favorite, address)
super().__init__(salary)
# Customer.__init__(self,favorite,address)
print(Manager.__mro__)
def main():
m=Manager(25000,'IT','广州')
m.work()
m.info()
if __name__ == '__main__':
main()
期间,我复制了博主的代码去排查错误的时候,发现了不少语法错误,比如 博主不注意 中文空格 与 缩进的问题,还有 博主应尽量写符合 PEP8 规范的代码(比如说,函数与函数之间应该空出两行代码,逗号之后应该先加一个空格后再写内容。。。。。)