Python--面向对象编程
一、面向对象的理解
面向对象的核心就是对象二字,什么是对象呢,对象就是特征与技能的结合体,例如,花、草、树木是对象、电脑和人也是对象,他们都有自己的特征和技能
二、面向对象的优点:
面向对象的优点正是面向过程的缺点,面向过程可扩展性差,但是面向对象可扩展性强
三、面向对象的缺点
面向对象的缺点正是面向过程的优点,面向过程能够把复杂的问题流程化、简单化,面向对象代码开发复杂度高
四、面向对象的应用场景
用户需求经常变化,例如互联网应用,游戏和企业内部应用等
五、类的概念
类就是一系列对象相似的特征和技能的结合体
强调,站在不同的角度,得到的分类是不一样的
在现实世界中:一定现有对象,后有类
在程序中:一定得先定义类,然后调用类产生对象
站在路飞学员的角度,大家都是学生
在现实世界中:
对象1:王一丫
特征:
学校=‘luffycity’
名字=‘王一丫’
性别=‘女’
年龄=18
技能:
学习
吃饭
睡觉
对象2:王二丫
特征:
学校=‘luffycity’
名字=‘王二丫’
性别=‘男’
年龄=28
技能:
学习
吃饭
睡觉
对象3:王三丫
特征:
学校=‘luffycity’
名字=‘王三丫’
性别=‘男’
年龄=38
技能:
学习
吃饭
睡觉
总结现实中路飞学院的学生类,
相似的特征:
学校=‘luffycity’
相似的技能:
学习
吃饭
睡觉
六、在程序中:
1、先定义类:
2、后产生对象
代码如下:
1 class LuffyStudent(): 2 school = 'luffycity' 3 4 def learn(self): 5 print('is learning') 6 7 def eat(self): 8 print('is eating') 9 10 def sleep(self): 11 print('is sleeping') 12 13 14 stu1 = LuffyStudent() 15 stu2 = LuffyStudent() 16 stu3 = LuffyStudent() 17 print(stu1) 18 print(stu2) 19 print(stu3)
结果如下:
<__main__.LuffyStudent object at 0x0000023169F2C5C0>
<__main__.LuffyStudent object at 0x0000023169F0E2E8>
<__main__.LuffyStudent object at 0x000002316A0CE0F0>
七、如何使用类
1、与函数不同,类定义好之后就会执行,示例代码如下
1 class LuffyStudent(): 2 school = 'luffycity' # 数据属性 3 4 def learn(self): #函数属性 5 print('is learning') 6 7 def eat(self): #函数属性 8 print('is eating') 9 10 def sleep(self): #函数属性 11 print('is sleeping') 12 13 print('====run=====')
结果如下:
====run=====
2、查看类的名称空间
代码如下:
1 print(LuffyStudent.__dict__) 2 print(LuffyStudent.__dict__['school']) 3 print(LuffyStudent.__dict__['learn'])
结果如下:
1 {'__module__': '__main__', 'school': 'luffycity', 'learn': <function LuffyStudent.learn at 0x000001420C1AC620>, 'eat': <function LuffyStudent.eat at 0x000001420C1AC6A8>, 'sleep': <function LuffyStudent.sleep at 0x000001420C1AC730>, '__dict__': <attribute '__dict__' of 'LuffyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'LuffyStudent' objects>, '__doc__': None} 2 luffycity 3 <function LuffyStudent.learn at 0x000001420C1AC620>
类有自己的查看类名称空间的方法
如下:
1 print(LuffyStudent.school) 2 print(LuffyStudent.learn)
结果如下:
luffycity
<function LuffyStudent.learn at 0x0000027CB1A4C620>
3、增加类的名称空间
1 LuffyStudent.country = 'China' 2 print(LuffyStudent.country)
结果如下:
China
3、删除类的名称空间
del LuffyStudent.country
4、更改类的名称空间
LuffyStudent.school = 'Luffycity'