查看上一节:类的属性和方法
类的特殊方法init
首先来看一个示例:
class Person :
def say_hello(self) :
print('大家好!我是 %s' %self.name)
p1 = Person()
#手动向对象添加name属性
p1.name='孙悟空'
p2 = Person()
p2.name='猪八戒'
p2.say_hello()
执行结果为:
此时如果添加一个p3对象,但是不赋值name的话就会报错。
目前来讲, 对于Person类来说name是必须的, 并且每一个对象中的name属性基本上都是不同;
而我们现在是将name属性在定义为对象以后, 手动添加到对象中,这种方式很容易出现错误。
我们希望在设置对象的时候就必须创建name属性,如果不设置对象将无法创建。
并且属性的创建应该是自动完成的,而不是在创建对象之后手动完成。
在类中可以定义一些特殊方法(魔术方法),特殊方法都是以__
开头,__
结尾的方法,特殊方法不需要我们自己调用。
不要尝试去调用特殊方法,特殊方法将会在特殊的时刻自动调用。
学习特殊方法:
1.特殊方法什么时候调用
2.特殊方法有什么作用
init就是Python的一种特殊方法,会在对象创建以后离开执行,可以用来向新创建的对象中初始化属性。
调用类创建对象时,类后边的所有参数都会依次传递到init()中。
class Person :
def __init__(self,name):
# 通过self向新建的对象中初始化属性
self.name = name
def say_hello(self):
print('大家好,我是%s'%self.name)
p1 = Person('孙悟空')
p2 = Person('猪八戒')
p3 = Person('沙和尚')
p4 = Person('唐僧')
p4.say_hello()
执行结果为:
此时就完成了强制赋值,因为如果不给传递name的话就会报错。
通过上述的p1创建流程讲解一下创建对象的流程:
p1 = Person()的运行流程
1.创建一个变量
2.在内存中创建一个新对象
3.__init__(self)方法执行
4.将对象的id赋值给变量
也就是说:
1、 init会在对象创建以后离开执行;
2、init可以用来向新创建的对象中初始化属性;
3、调用类创建对象时,类后边的所有参数都会依次传递到init()中。
到这里类与对象就基本结束了,总结一下:
类的基本结构
class 类名([父类]) :
公共的属性...
# 对象的初始化方法
def __init__(self,...):
...
# 其他的方法
def method_1(self,...):
...
def method_2(self,...):
...
...
练习:
尝试自定义一个表示狗的类(Dog)
属性:
name
age
gender
height
...
方法:
jiao()
yao()
run()
...
点击查看配套学习视频
获取更多内容请订阅Python学习站官方技术圈!