Python Class self __init__笔记

本文详细解析了Python中类的初始化过程,包括__init__方法的使用,如何正确设置实例属性,以及如何避免常见错误。此外,还介绍了如何在类的方法中定义额外属性。

学到这个知识已经是第4,第5遍了,但还是跟盲人摸象一样。

还是做点记录,和测试

图1:这里的name和age,是指对实例初始化的时候,实例会带有的属性,a和b是等待客户传入的参数

图2:按照这样的设置,来进行的测试结果


如果,我们在__init__里面设置了2个参数,但是创建实例化对象时候只给了一个,那么,系统就会报错的,如下面

图3:仅设置了name的实参,没给age的实参


当然,如果在__init__里面给了默认参数了,也可以仅输入一个,也是可以的



那name和age只是创建实例对象时候初始化时候该有的,如果后面像用到其他属性呢?

答案是在方法中可以自行定义,如下图

我这里只是举了个例子,身高是年龄的3倍关系,就位对象创建了一个tall属性,后面可以随时调用

然后,需要记住的是,self一定要写,不然就等于是方法内的临时变量了,不是对象的属性了!!!

我们看下报错的那张图



然后我们来看一下,在初始化__init__的时候,如果没有带self的话,会有什么样的情况,如下:

下面例子,第7行里面,这个name没有self的前缀,所以实际上,这里的name只是一个__init__内部的临时局部变量,在后面根本不会用到,等于浪费了

我们看到my name is class global name这里,正式因为初始化__init__里面没有self.name属性,所以,他调用的是楼上的class变量

下面一行当你直接调用变量name的时候,因为class变量是针对类对象和实例对象的,所以,调用的name只能再往上一层,调用全局变量

组后一行的Person.name里的Person是类对象,所以调用的是class变量







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值