一、特殊方法(魔术方法)
1.1 问题引入
定义一个类对象,并将其实例化。对不同的实例对象,我们可以手动定义不同的属性值
class person:
def speak(self):
print("你好,我是%s" %self.name)
p1 = person()
p2 = person()
p3 = person()
p1.name = '钢铁侠'
p2.name = '蜘蛛侠'
p1.speak()
p2.speak()
p3.speak()
在person这个类中,每个对象都必须定义name这个属性且每个对象的属性值都不一样,需要手动添加好几个对象的name属性,较为麻烦;
当忘记添加某个对象的name属性而直接调用speak方法时,Python并不会提示错误,但运行时却报错
有什么方法可以解决以上两个问题呢?
1.2 特殊方法(init)
-
特殊方法简介
特殊方法以双下划线开头,以双下划线结束的方法__XXX__
特殊方法不需要自己调用,会在特殊的时候有解释器自动调用 -
学习特殊方法的方式
特殊方法什么时候调用
特殊方法有什么作用 -
__init__方法简介
__init__方法在实例对象创建时自动调用
__init__方法会向实例对象初始化属性 -
实例对象的创建流程
p1 = person()
a.创建了一个变量p1
b.创建了一个实例对象
c.执行类中代码块中的代码,只在类中执行一次
d.调用 __init__方法class person: def __init__(self,name): # self指的就是当前所创建的实例对象本身 #name为该函数的一个形参,通过传参来初始化当前的属性,属性名也为name