回复一个在学习python过程中遇到问题的同学

在这里插入图片描述
这是原博客主人的问题,经过分析,可以看出,问题不难,无非是 博主 同时 调用了两次 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 规范的代码(比如说,函数与函数之间应该空出两行代码,逗号之后应该先加一个空格后再写内容。。。。。)

发布了36 篇原创文章 · 获赞 75 · 访问量 5460

猜你喜欢

转载自blog.csdn.net/weixin_44449518/article/details/97702936
今日推荐