【Python】子类问题super()漏|TypeError: descriptor ‘__init__‘ requires a ‘super‘ object but received a ‘str‘

1、今天,学习子类的__init__()方法的时候报了一个错误:TypeError: descriptor '__init__' requires a 'super' object but received a 'str',具体代码如下:

class staff:
    def __init__(self,name,id):
        self.name=name
        self.id=id

    def print_info(self):
        print(f"员工名字:{self.name},员工:{self.id}")

class FullTimeEmployee(staff):
    def __init__(self, name, id,monthly_salary):
        super.__init__(name,id)
        self.monthly_salary=monthly_salary

    def calculate_monthly_pay(self):
        print(self.monthly_salary)

zs=FullTimeEmployee("张三","001",5000)
zs.print_info()

运行后报如下图所示:

2、原因和解决办法:

Traceback错误提示11行,super.__init__(name,age,sex); 这一行代码出现问题,错误信息是描述符‘__init__’需要一个‘super’对象,但接收到一个‘str’。原因就是代码写错了,没注重细节,解决办法,将上面11行代码改下便可以了:

super().__init__(name,id);


运行后便正常输出了:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值