带参数的--init--方法

本文介绍了Python中类的初始化方法`__init__`的使用,阐述了如何通过`__init__`在创建对象时动态添加属性值。通过实例展示了在创建Person类对象时,如何正确传递参数给`__init__`方法,以及如何避免参数不匹配导致的错误。同时,讨论了如何实现不同对象具有不同属性值的动态添加,强调了为每个对象单独赋值或设置默认值的重要性。

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

每次我们创建对象时,如果使用init方法,是不是只能添加同一个值的属性呢?

如果我们能够将参数传递到init方法中,是不是就可以在创建对象时,动态添加属性值了呢?

我们怎样给init进行传参呢?

面临的问题: 1.我们不需要手动调用init 在哪里给他传参呢? 2.我们传参时到底传什么参数给init方法呢?

在实例化对象时,类名(参数1, 参数2....)这些参数会传递给init方法,进行使用

class Person(object):

def init(self, name, age):

print(name, age)

TypeError: init() missing 2 required positional arguments: 'name' and 'age'

p1 = Person()

既然我们给init方法中添加了参数,就必须传值,否则就会报错

在Person的括号中传参,就可以传递到init方法中,传参的数量,就是init方法中除了self之外的位置参数的数量

p1 = Person('Jack', 18) # Jack 18

结论: 在Person类创建对象时,在()内添加参数,可以被init接收但是,传参数量和inti方法中的形参必须一致

怎样实现动态的实例属性添加呢?

class Person(object): def init(self, name, age): # self.属性名 = 参数 将函数外部传递进来的参数赋值给对象,创建实例属性 self.name = name self.age = age

实例化对象时要正确传参

p1 = Person('Rose', 17) print(p1.name, p1.age)

创建第二个对象,查看属性是否动态传递成功

p2 = Person('Jack', 18) print(p2.name, p2.age)

通过这种方式,我们在创建对象时可以指定其不同对象属性的值不同,但是所有的对象包含的属性类别相同

这种形式下一定要给每一个对象单独赋值,或者给init方法中的属性一些默认值,否则会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值