標籤:不同 報錯 sub teacher 狀態 方法 acl markdown div
1.概念
1)面向過程與物件導向 面向過程,核心是過程二字,過程即解決問題的步驟,就是先幹什麼再幹什麼 基於該思想寫程式好比在設計一條流水線,是一種機械式的思維方式 優點:複雜的過程流程化,進而簡單化 缺點:擴充性差 物件導向,核心是對象二字,對象是特徵與技能的結合體 基於該思想寫程式就好比在創造世界,世界是由一個個對象組成,是一種’上帝式‘ 的思維方式 優點: 可擴充性強 缺點: 編程複雜高,容易出現過度設計2) 類 對象是特徵與技能的結合體,類就是一系列對象相似的特徵與技能的結合體 在現實世界中:一定是先有一個個具體存在的對象,後總結出的類 在程式中: 一定保證先定義類,後產生對象3) 執行個體化 調用類的過程又稱為執行個體化
2.類(Class)程式執行個體
1)定義一個Student類
class Student: school = ‘oldboy‘ def learn(self): print(‘is learning‘) def choose_course(self): print(‘choose course‘) print(‘======run‘)#函數只有在調用時才能運行,而類體代碼在類定義時就能執行print(Student.__dict__)#查看屬性print(Student.school) #類的資料屬性print(Student.learn) #類的函數屬性#增加屬性Student.country = ‘china‘print(Student.country)#修改屬性Student.school = ‘Oldboy‘print(Student.school)#刪除屬性del Student.country#print(Student.country) #刪除後就訪問不到,則會報錯Student.learn(‘AAAA‘) #必須傳值,才能執行
2)定義一個Teacher類
class Teacher: school = ‘oldboy‘ count = 0 def __init__(self,name,sex,age,level,salary): self.name = name self.sex = sex self.age = age self.level = level self.salary = salary Teacher.count+=1 def teach(self): print(‘%s is teaching‘ %self.name)t1 = Teacher(‘張三‘,‘male‘,18,10,3000)t2 = Teacher(‘李四‘,‘male‘,38,9,30000)t3 = Teacher(‘王五‘,‘male‘,29,9,30000)#通過調用執行個體下的name列印老師名字print(t1.name) #張三print(t2.name) #李四print(t3.name) #王五#調用任何一個執行個體,count都是老師的總個數print(t1.count) #3print(t2.count) #3print(t3.count) #3
3.類的繼承與派生
在Python2中類分為2種: 1.經典類 2.新式類:指的是繼承object類的類,以及該類的子類在Python3中只有新式類,預設會繼承object類的類,以及該類的子類=================================================Python2 Python3class Parten1(object) 等同於 class Partent1()=================================================
class Parent2: passclass Sub1(Parent1): passclass Sub2(Parent1,Parent2): pass#Sbu1 繼承了Parent1print(Sub1.__bases__)#Sub2 繼承了Paren1 Parent2print(Sub2.__bases__)#預設會有繼承 objectprint(Parent1.__bases__) #(<class ‘object‘>,)print(Parent2.__bases__) #(<class ‘object‘>,)
4.多態與多態性
多態:同一種事物的多種形態,對於動物來說,動物都能叫,但是可能內容不同,即呈現出來的狀態不同import abcclass Animal(metaclass=abc.ABCMeta): @abc.abstractclassmethod def speak(self): passclass Pig(Animal): def speak(self): print(‘哼哼‘)class Dog(Animal): def speak(self): print(‘汪汪‘)dog=Dog()pig=Pig()#dog、pig都是動物,只要是動物肯定有talk方法,於是我們可以不用考慮它們具體是什麼類型,而直接使用 dog.talk() pig.talk()#更進一步,我們可以定義一個統一的介面來使用def func(obj): obj.talk()
十一、Python之物件導向