python面向对象-1方法、构造函数

栏目: Python · 发布时间: 7年前

内容简介: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()

执行结果:

python面向对象-1方法、构造函数

类内定义实例方法需要手动加上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()

运行结果:

python面向对象-1方法、构造函数

做如下改动,用户可以不设置洗衣机加水和洗涤剂量也可以洗衣服:

 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洗涤剂,不好,要改进。用到构造函数。

python面向对象-1方法、构造函数

 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     

运行结果: 

构造函数可以使类在实例化时实例对象更加丰富,具有实例化不同种类的实例的作用。

python面向对象-1方法、构造函数


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

离散数学及其应用(英文版·第5版)

离散数学及其应用(英文版·第5版)

Kenneth H.Rosen / 机械工业出版社 / 2003 / 79.00元

本书第4版是全球500多所大学的指之一教材,获得了极大的成功。中文版也已被国内大学广泛有用为教材。第5版在前四版的基础上做了大量的改进,使其成为更有效的教学工具。   本书可作为1至2个学期的离散数学课入门教材,适用于数学、计算机科学、工程等专业的学生。一起来看看 《离散数学及其应用(英文版·第5版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具