200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python面向对象-1方法 构造函数

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

时间:2022-10-22 08:47:22

相关推荐

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

类是指:描述一种事物的定义,是个抽象的概念

实例指:该种事物的一个具体的个体,是具体的东西

打个比方:

“人”是一个类。“张三”是人类的一个具体例子

在编程时也是同样的道理,你先自己定义一个“类”,当你需要用时,用“类”的定义来创造一个具体的例子。

用类的定义来创建一个实例,就叫做类的实例化。

实例化过程就是调用类的构造函数,完成该实例的数据分配

下面用一个洗衣机的例子来演示:

这个是一个简单的手动洗衣机 w 实例化了Washer类:

1 #class Washer: 2 class Washer:#定义一个Washer类 3 4def __init__(self): #这是定义类的构造函数,也是一个特殊的实例方法 5 self.water=0 #实例的属性(变量) 6 self.scour=0 7 8def add_water(self,water):#实例的方法(函数),可以接受实例化后传过来的参数给类内实例变量,又因为实例继承了类的属性和方法,所以 9#相当于传递给了类的实例化对象的实例变量10 print('Add water:',water)11 self.water=water#在类的方法内引用实例变量用 self.属性名12 13def add_scour(self,scour):14 self.scour=scour15 print('Add scour:',scour)16 17def start_wash(self):18 print('Start wash...')19 20 if __name__=='__main__':21w=Washer()#类的实例化22w.add_water(10)#传递参数到实例变量23w.add_scour(2)24w.start_wash()

执行结果:

类内定义实例方法需要手动加上self参数(如第4行),但在类实例化后调用这个方法时不必手动加self参数,python会自动添加,如第22行。

实例化方法是 w=Washer() ,可以看出需要在类后加一个括号。

类外调用类内定义的实例方法可以 实例名.方法名() ,例如

w.add_scour(2),必要的时候加上参数。

下面改动一下程序,弄成半自动洗衣机,即在类的内部,方法之间相互调用。

washa.py:

1 class Washer: 2 3def __init__(self): 4 self.water=0 5 self.scour=0 6 7def set_water(self,water): 8 self.water=water 9 self.add_water()10 11def set_scour(self,scour):12 self.scour=scour13 self.add_scour()#在类内调用函数,用 self.方法名14 15def add_water(self):16 print('Add water:',self.water)17 18def add_scour(self):19 print('Add scour:',self.scour)20 21def start_wash(self):22 print('Start wash...')23 24 if __name__=='__main__':25w=Washer()26w.set_water(10)27w.set_scour(2)28w.start_wash()29

也可以改成:

1 class Washer: 2 3def __init__(self): 4 self.water=0 5 self.scour=0 6 7def set_water(self,water): 8 self.water=water 9 10def set_scour(self,scour):11 self.scour=scour 12 13def add_water(self):14 print('Add water:',self.water)15 16def add_scour(self):17 print('Add scour:',self.scour)18 19def start_wash(self):20 self.add_water()21 self.add_scour()22 print('Start wash...')23 24 if __name__=='__main__':25w=Washer()26w.set_water(10)27w.set_scour(2)28w.start_wash()

运行结果:

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

1 class Washer: 2 3def __init__(self): 4 self.water=10#将实例属性修改为默认的标准洗衣程序需要的量 5 self.scour=2 6 7def set_water(self,water): 8 self.water=water 9 10def set_scour(self,scour):11 self.scour=scour 12 13def add_water(self):14 print('Add water:',self.water)15 16def add_scour(self):17 print('Add scour:',self.scour)18 19def start_wash(self):20 self.add_water()21 self.add_scour()22 print('Start wash...')23 24 if __name__=='__main__':25w=Washer()26 ## w.set_water(10) #这两行代码注释掉,代表用户不必设置水和洗涤剂量27 ## w.set_scour(2)28w.start_wash()29

但是这样,只能加入10L水和2L洗涤剂,不好,要改进。用到构造函数。

1 class Washer: 2 3def __init__(self,water=10,scour=2): 4 self.water=water 5 self.scour=scour 6 7def set_water(self,water): 8 self.water=water 9 10def set_scour(self,scour):11 self.scour=scour 12 13def add_water(self):14 print('Add water:',self.water)15 16def add_scour(self):17 print('Add scour:',self.scour)18 19def start_wash(self):20 self.add_water()21 self.add_scour()22 print('Start wash...')23 24 if __name__=='__main__':25w=Washer()26w.start_wash()27 28wb=Washer(100,10)29wb.start_wash()30 31wc=Washer(100,10)32wc.set_water(50)33wc.set_scour(5)34wc.start_wash()35 3637 3839

运行结果:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。