内容简介:python面向对象-1方法、构造函数
类是指:描述一种事物的定义,是个抽象的概念
实例指:该种事物的一个具体的个体,是具体的东西
打个比方:
“人”是一个类。“张三”是人类的一个具体例子
在编程时也是同样的道理,你先自己定义一个“类”,当你需要用时,用“类”的定义来创造一个具体的例子。
用类的定义来创建一个实例,就叫做类的实例化。
实例化过程就是调用类的构造函数,完成该实例的数据分配
下面用一个洗衣机的例子来演示:
这个是一个简单的手动洗衣机 w 实例化了Washer类:
1 #class Washer:
2 class Washer:#定义一个Washer类
3
4 def __init__(self): #这是定义类的构造函数,也是一个特殊的实例方法
5 self.water=0 #实例的属性(变量)
6 self.scour=0
7
8 def add_water(self,water):#实例的方法(函数),可以接受实例化后传过来的参数给类内实例变量,又因为实例继承了类的属性和方法,所以
9 #相当于传递给了类的实例化对象的实例变量
10 print('Add water:',water)
11 self.water=water#在类的方法内引用实例变量用 self.属性名
12
13 def add_scour(self,scour):
14 self.scour=scour
15 print('Add scour:',scour)
16
17 def start_wash(self):
18 print('Start wash...')
19
20 if __name__=='__main__':
21 w=Washer()#类的实例化
22 w.add_water(10)#传递参数到实例变量
23 w.add_scour(2)
24 w.start_wash()
执行结果:
类内定义实例方法需要手动加上self参数(如第4行),但在类实例化后调用这个方法时不必手动加self参数,python会自动添加,如第22行。
实例化方法是 w=Washer() ,可以看出需要在类后加一个括号。
类外调用类内定义的实例方法可以 实例名.方法名() ,例如
w.add_scour(2),必要的时候加上参数。
下面改动一下程序,弄成半自动洗衣机,即在类的内部,方法之间相互调用。
washa.py:
1 class Washer:
2
3 def __init__(self):
4 self.water=0
5 self.scour=0
6
7 def set_water(self,water):
8 self.water=water
9 self.add_water()
10
11 def set_scour(self,scour):
12 self.scour=scour
13 self.add_scour()#在类内调用函数,用 self.方法名
14
15 def add_water(self):
16 print('Add water:',self.water)
17
18 def add_scour(self):
19 print('Add scour:',self.scour)
20
21 def start_wash(self):
22 print('Start wash...')
23
24 if __name__=='__main__':
25 w=Washer()
26 w.set_water(10)
27 w.set_scour(2)
28 w.start_wash()
29
也可以改成:
1 class Washer:
2
3 def __init__(self):
4 self.water=0
5 self.scour=0
6
7 def set_water(self,water):
8 self.water=water
9
10 def set_scour(self,scour):
11 self.scour=scour
12
13 def add_water(self):
14 print('Add water:',self.water)
15
16 def add_scour(self):
17 print('Add scour:',self.scour)
18
19 def start_wash(self):
20 self.add_water()
21 self.add_scour()
22 print('Start wash...')
23
24 if __name__=='__main__':
25 w=Washer()
26 w.set_water(10)
27 w.set_scour(2)
28 w.start_wash()
运行结果:
做如下改动,用户可以不设置洗衣机加水和洗涤剂量也可以洗衣服:
1 class Washer:
2
3 def __init__(self):
4 self.water=10#将实例属性修改为默认的标准洗衣程序需要的量
5 self.scour=2
6
7 def set_water(self,water):
8 self.water=water
9
10 def set_scour(self,scour):
11 self.scour=scour
12
13 def add_water(self):
14 print('Add water:',self.water)
15
16 def add_scour(self):
17 print('Add scour:',self.scour)
18
19 def start_wash(self):
20 self.add_water()
21 self.add_scour()
22 print('Start wash...')
23
24 if __name__=='__main__':
25 w=Washer()
26 ## w.set_water(10) #这两行代码注释掉,代表用户不必设置水和洗涤剂量
27 ## w.set_scour(2)
28 w.start_wash()
29
但是这样,只能加入10L水和2L洗涤剂,不好,要改进。用到构造函数。
1 class Washer:
2
3 def __init__(self,water=10,scour=2):
4 self.water=water
5 self.scour=scour
6
7 def set_water(self,water):
8 self.water=water
9
10 def set_scour(self,scour):
11 self.scour=scour
12
13 def add_water(self):
14 print('Add water:',self.water)
15
16 def add_scour(self):
17 print('Add scour:',self.scour)
18
19 def start_wash(self):
20 self.add_water()
21 self.add_scour()
22 print('Start wash...')
23
24 if __name__=='__main__':
25 w=Washer()
26 w.start_wash()
27
28 wb=Washer(100,10)
29 wb.start_wash()
30
31 wc=Washer(100,10)
32 wc.set_water(50)
33 wc.set_scour(5)
34 wc.start_wash()
35
36
37
38
39
运行结果:
构造函数可以使类在实例化时实例对象更加丰富,具有实例化不同种类的实例的作用。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Java构造函数与普通函数用法详解
- 构造函数、原型、原型链、继承
- Vue源码: 构造函数入口
- Hashmap源码解析-构造函数
- JavaScript 构造函数的继承
- Swift学习之构造函数与析构函数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。