前言:学习python有一段时间了,但是总搞不清楚面向过程和面向对象,具体重新学习一下
python是一种即支持面向过程(函数式)又支持面向对象的一种语言
面向对象:对着代码逻辑(包含数据、函数、逻辑)进行封装,最大程度提高代码的复用,减少编码量
一、类和对象(封装)
类是对一系列具有相同特征和行为的事件的统称,是一个抽象的概念,本身真实存在的事物
*特征既是属性
*行为既是方法
类相当于制造飞机的图纸,就是一个模板,是符责创建对象的
#要针对所有的飞机定义一个类,类就是模板 #class是固定的,表示是一个类 #Plane表示类名称,自定义 class Plane: #定义一个类
# 如果每个对象都有的属性,但是又不会根据对象的修改二修改,而是要改所有都改 made = "Made in China"
#每个飞机对象都有长宽高 #假设飞机都是常100,宽50,高70 #__init__表示初始化方法,意思就是说在创造对象时默认会自动调用 #如果对象在创建时就需要具备哪些属性,就在这里定义 #为了区分对象,我们给每架飞机设置一个编号,但是编号是动态的 #面向对象里面有两个重要的概念,类、对象,Plane是类,Plane(sn="001")是对象,类的定义里面self就代表对象本身 #函数写在类下面,叫做方法,没有写在类下面叫函数 ????#对于每个对象都有的属性和行为,并且大家都不相干,此时属性和行为就需要采用实例属性和实例方法来定义 def __init__(self,sn,length=100,width=50,height=70): self.sn = sn self.length = length self.width = width self.height = height
????#针对对象的行为动作,定义成方法,self代表对象本身 def start(self): #对象方法,实例方法 print(f"{self.sn}正在起飞") def fly(self,i): #对象方法,实例方法 print(f"{self.sn}正在{i}米高空飞行")
#当前类所有代表的事物,公共的行为,但是这个行为又不会因为对象的改变而改变,那么就采用类方法来定义 @classmethod def fly_ability(cls): #cls代表当前类名称 print(f"{cls.made}飞机质量很好") return "1234567"
if __name__ == '__main__': #根据飞机模板,去创建一架飞机 # 这就是根据类去创造一个对象,Plane()这是创造的过程,然后将创造的对象赋值给plane1这个变量 #创造对象的过程也叫实例化对象 plane1 = Plane(sn="001") #实例化对象 print(plane1.sn) print(plane1.length) print(plane1.width) print(plane1.height) #再造一架飞机 plane2 = Plane(sn="002") study1 = Study(name="小米",phone=12345,wx=123456) print(study1.name) print(study1.phone) print(study1.wx)
plane1 = Plane(sn="001") #两个行为全部采用变量进行调用,变量实际上就是飞机对象 plane1.start() plane1.fly(i=800)
#类属性的调用,可以通过类名称.类属性调用 print(Plane.made) #类方法调用 print(Plane.fly_ability())