目錄python
回顧一下編程
面向過程編程(思想 )app
流水線函數
優勢:邏輯清晰(邏輯一步步的,系統)code
缺點:擴展性差(上一個函數的輸出是下一個函數的輸入)對象
面向對象編程(思想)blog
對象: 特徵和技能的結合體it
面對對象編程:一個個對象進行交互面向對象編程
優勢:擴張性很是強class
缺點:邏輯很是複雜
類(類別):一系列具備相同特徵和技能的對象
現實世界中先有對象,後有類
# 定義學生 # 姓名: 豬瑞星 # 學號: 222222 # 學校: oldboy # 技能:選課,三十六變 # 姓名: 孔悟空 # 學號: 111111 # 學校: oldboy # 技能:選課,七十二變 # 姓名: 雷公 # 學號: 666666 # 學校: oldboy # 技能: 教課,piao # 定義老師 # 姓名: tank # 學校: oldboy # 技能: 教課,piao # 姓名: nick # 學校: oldboy # 技能:教課,看書
python中先有類,再有對象
class 類名(駝峯體): # 定義類,會直接運行類體內的代碼 # 定義一系列特徵 # 定義一系列方法 對象1 = 類名() # 實例化出對象
class OldBoyStudent: school = 'oldboy' def __init__(self,name,age): self.name = name self.age = age def choose_course(self): print(' is choosing course') stu1 = OldBoyStudent('gll',18) stu1.school stu2 = OldBoyStudent('nick',18) stu2.school
# 局部存在 class OldBoyStudent: school = 'oldboy' name ='nick' def __init__(self,name,age): self.name = name self.age = age def choose_course(self): print('is choosing course') stu1 = OldBoyStudent('gll',18) print(stu1.name) # gll stu2 = OldBoyStudent('nick',18) print(stu2.name) # nick # 局部找不到 class OldBoyStudent: school = 'oldboy' name ='nick' def __init__(self,name,age): #self.name = name self.age = age def choose_course(self): print('is choosing course') stu1 = OldBoyStudent('gll',18) print(stu1.name) # nick stu2 = OldBoyStudent('nick',18) print(stu2.name) # nick
class OldBoyStudent: school = 'oldboy' def __init__(self,name,age): self.name = name self.age = age def choose_course(self): print(id(self)) #1983522658680 print(self.school) print(f'{self.name} is choosing course') print(name) stu1 = OldBoyStudent('gll',18) stu1.choose_course() # self 是對象自己 print(id(stu1)) #1983522658680 OldBoyStudent.choose_course(stu1) # 注: # 針對類而言:choose_course裏的self就是傳的參數 # 針對對象而言:choose_course裏的self就是對象自己
lis = [1,2,3] lis2 =list([1,2,3]) # 下面兩式等同,理解參數self的概念 lis.append(4) # self自動傳lis # lis2.append(lis,4) # 手動傳lis
在類裏面封裝了一大堆特徵/數據,而後又封裝了一大堆方法(方法用來專門用來操控這些數據的),而且在這基礎上對於不一樣對象,這些屬性和方法有不同
class Animal: def __init__(self,attri,height,weight): self.attri = attri self.height = height self.weight = weight def jiao(self): print('self.attr,'開始叫了') def eat(self): print('self.attri,'開始吃飯了') people = Animal('人類',180,140) dog = Animal('狗',100,50) people.eat() dog.jiao()
😂累了就放鬆一下吧