之前代码存在的问题——在类的外部给对象增加属性
- 我们将上一个代码进行调整,先调用方法在设置属性,试试看会出现什么问题
提示:
- 在日常开发中,不推荐使用在类的外部给对象增加属性,因为python从上向下执行,如果没有找到属性,程序会报错
- 对象应该包含哪些属性,应该封装在类的内部
04.初始化方法
- 当使用类名()创建对象时会执行以下操作
- 为对象在内存中分配空间——创建对象
- 为对象的属性设置初始值——初始化方法
- 这个初始化方法就是__init__方法,是对象的内置方法
__init__方法是专门用来定义一个类具有哪些属性的方法!
演练:在Cat中增加__init__方法,验证该方法在创建对象时会被自动调用
在初始化方法内部定义属性
- 在__init__方法内部使用 self.属性名=属性的初始值 就可以定义属性
- 定义属性之后,再使用Cat类创建的对象,都会拥有该属性
代码中所有猫的name属性都会被高亮显示,如下:
总结:如果希望使用的 类 创建出来的 对象,默认就拥有某个属性,我们就可以在初始化方法内部使用self. 利用赋值语句就可以定义属性
改造初始化方法——初始化的同时设置初始值
- 在开发中,如果希望创建对象的同时,就设置对象的属性,可以对__init__方法进行改造
- 把希望设置的属性值,定义成__init__方法的参数
- 在方法内部使用 self.属性 = 实参 ,接收外部传递的参数
- 在创建对象时,使用 类名(属性1,属性2....)调用
由于在初始化方法中,给name设置的初始值固定死了,所以大懒猫在调用吃鱼的方法时依旧是Tom的名字,我们可以给函数增加一个形参,用形参替换函数内部被固定死的值,就可以让函数内部的代码灵活起来,同时增加形参后,在调用函数时以实参的方式把具体希望在函数内部表达的值传递进来,