面向对象的概念总结
类:
一系列对象的特征与技能的抽象
如何理解:我们把现实生活中的物体可以抽象成一个个对象,如学校中的学生:
1、归类——我们可以把学生都归成一个学生类。
2、抽象出特征——学生有什么特点?(学校、姓名、性别、年龄)
3、抽象出技能——学生有什么技能?(学习、吃饭、打球、睡觉)
A、当我们把学生抽象成一个类的时候,就可以通过构造类来生成一个个的学生:
B、注意:在现实世界当中,我们通过对象来抽象出类。
在程序中,我们要先定义类,才能通过类来生成对象。
# 1、先从现实世界抽象定义类 # 2、后再通过类产生一个个对象 class Student: # 相似特征 school = 'luffycity' # 相似技能 def lean(self): print('is leaning') def eat(self): print('is eatting') def sleep(self): print('is sleeping') # 2、后通过类产生对象 stu1 = Student() # 实例化一个学生对象stu1 stu2 = Student() stu3 = Student() print(stu1) print(stu2) print(stu3)
类的使用:
增删改查:
# 增 Student.local='北京' # 增加类 # 删 del Student.local # 删除类 # 改 Student.school='Luffycity' # 改类的属性 # 查 print(Student.__dict__) #查所有 print(Student.school) #查单个
上面的情况是生成三个相同属性的对象,
当我们要生成三个不同属性的情况就要用到__init__方法了
实例:
self :实例本身,在实例化时python解析器会自动把实例本身通过self参数传入。
如果我们要实例化多个对象的时候,可以通过__init__()方法,把每个对象独有的属性通过self参数传入:
class LuffyStudent: #相识特征 school = 'luffycity' #相识技能 def __init__(self,name,sex,age): self.Name = name self.Sex=sex self.Age=age def lean(self): print('is leaning') def eat(self): print('is eatting') stu1 = LuffyStudent('小何','女',22) stu2 = LuffyStudent('小李','男',23) stu3 = LuffyStudent('小红','女',22) print(stu1.Name)
属性:
对象所共有的特征称为属性。
如上面代码:school 就是一个共有的特征了。
方法:
对象所有的技能称为方法。
如上面代码:lean、eat等共有的技能称方法。
对象:
如上面代码,通过生成类,实例化后就产生一个对象
stu1=School() # 这个称为对象
#对象的操作 # 增 stu1.local='北京' # 增加类 # 删 del stu1.local # 删除类 # 改 stu1.school='Luffycity' # 改类的属性 # 查 print(stu1.__dict__) #查所有 print(stu1.school) #查单个
补充说明:
1、所站的角度不同,定义的类截然不同
2、现实中的类,并不完全等于程序中的类,程序中可能会把类拆分。
3、程序中可以有现实中不存在的类——策略类。