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

本文详细解析了在Python中,当一个类同时继承多个父类且每个父类都有__init__方法时,如何正确使用super()来避免解释器的混淆。通过具体实例,演示了正确的初始化调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值