持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
1. 初始化方法内部定义属性
在初始化方法内部定义属性
- 在
__init__方法内部使用self.属性名=属性的初始值就可以定义属性 - 定义属性之后,再使用Cat类创建的对象,都会拥有该属性
- 如果使用这个类创建出的对象默认就拥有某个属性,在初始化方法内部使用self.利用赋值语句就可以定义这个属性了
class Cat:
def __init__(self):
print("这是一个初始化方法")
# self.属性名 = 属性的初始值
self.name = "Tom"
# 使用类名()创建对象的时候,会自动调用初始化方法__init__
tom = Cat()
print(tom.name)
程序运行结果如下图所示:在初始化方法内部使用self.定义属性。程序运行后可以看出,tom对象默认就带有name属性了
2. 初始化的同时设置初始值
在开发中,如果希望在创建对象的同时,就设置对象的属性,可以对__init__方法进行改造
- 把希望设置的属性值,定义成__init__方法的参数
- 在方法内部使用
self.属性=形参接收外部传递的参数 - 在创建对象时,使用
类名(属性1, 属性2...)调用 希望使用这个类创建出来的对象就能直接拥有形参中传递的属性值。
代码示例如下所示:在def__init__()中设置了新形参new_name,初始化内部使用self.name来接收name属性,在创建对象时,直接在类的括号中传入实参Tom,就能够使这个对象拥有传递的属性值Tom。
class Cat:
def __init__(self, new_name):
print("这是一个初始化方法")
# self.属性名 = 属性的初始值
self.name = new_name
def eat(self):
# 哪一个对象调用的方法,self就是哪一个对象的引用
print("%s 爱吃鱼" % self.name)
# 使用类名()创建对象的时候,会自动调用初始化方法__init__
tom = Cat("Tom")
print(tom.name)
lazy_cat = Cat("大懒猫")
lazy_cat.eat()
程序运行结果如下图所示:从图中可以看出,我们使用类创建出来的对象就能直接拥有形参中传递的属性值Tom和大懒猫。相当于是在初始化方法内部定义属性的基础上做了改进,使得程序更加灵活。