python中面向对象有什么特点

发布时间 2023-11-28 13:18:53作者: 秒秒开心

一:问题

python中面向对象有什么特点?

 

二:回答

python同其他面向对象语言一样,有3个特征:封装、继承、重写

 

简单理解就是:
封装:把一系列属性和操作封装到一个方法里面,这样想要实现某种效果,只需要简单的调个方法名字就行了,不需要在写一遍所有的操作内容

继承:简单理解就是拼爹,父辈拥有的财富,你直接继承就能用,比如父辈有结婚这个方法,你继承来了,别人要白手起家结婚,你直接拿父辈的资产结婚

重写:简单理解就是拼爹得来的东西,在你这一辈有一些地方不适用了,要与时俱进,把父辈留给你的改一改,这样你的生活比父辈更加丰富多彩,即多态,比如父辈结婚的方法写的是用拖拉机结婚,到你这里还是结婚但是换成了小汽车结婚了

 1 class Father(object):  
 2     def get_married(self,name="老爸"):  
 3         print(name)  
 4         print("用拖拉机结婚!")  
 5         print("彩礼三大件", ["自行车", "电视机", "缝纫机"])  
 6   
 7 class Child(Father):  
 8     def get_married(self,name="儿子"):  
 9         print(name)  
10         print("用小汽车结婚!")  
11         print("彩礼三大件", ["车子", "房子", "票子"])  
12   
13 if __name__ == "__main__":  
14     clild = Child()  
15     clild.get_married("小明")
16 
17 >>> 运行结果如下:
18 >>> 小明
19 >>> 用小汽车结婚!
20 >>> 彩礼三大件 ['车子', '房子', '票子']

 

三:关于python函数重载的说明

重载的条件是:
①一个类里面
②方法名称相同
③参数不同

事实上按照这样的条件,在python中是不建议这样的写法,结果是一个类里面如果出现多个重名的方法,会覆盖掉先写的方法。
那python的重载怎么办,可以这样理解,这里方法的参数不同,存在2种情况:参数类型不同、参数个数不同

而在python里对参数的类型没有强制限制,你可以不写参数的类型,参数的个数又可以接受可变参数,所以python其实不需要重载这个概念。

如下图所示:用一个方法就能实现多个方法重载的效果

 1 class Child():  
 2     def info(self,name="儿子",age=0):  
 3         print(name,age)
 4 
 5 if __name__ == "__main__":  
 6     clild = Child()  
 7     #没传参  
 8     clild.info()  
 9     #传1个参数  
10     clild.info("小明")  
11     #传2个参数  
12     clild.info("小明",28)
13 
14 >>> 程序运行结果如下:
15 >>> 儿子 0
16 >>> 小明 0
17 >>> 小明 28