類,對象 ,封裝,實例變量,類變量,繼承,多態
阿新 • • 發佈:2017-12-20
方式 clas 繼承 bsp pos 自動 通過 特性 pri
類:對一類事物的抽象。例如:人 ,狗,貓,鳥。。。這樣是一大類的概括。講人,可以指很多人,狗也可以分很多種狗
對象:具體的某個類的實例。就想 張三--》指的就是人這個類下面的具體的某一個實例。泰迪 就是狗這個類下面的某個實例
面向對象的三個特性:
封裝:就是將屬性給封裝起來,這個是你特有性質,你可以讓外界知道,也可以不讓外界知道
例如:
# Author:zylong class Person: #人都有性別,姓名,身高,體重 def __init__(self,name,sex,heigh,weigh,age): #這些屬性可以直接被外界訪問的 self.name = name self.sex= sex self.heigh = heigh self.weigh = weigh #這些屬性只有類提供方法,才能被訪問 self.__age = age def getAge(self): return self.__age #私有方法也是一樣的,就是定義的時候以__開頭,外界是不能直接方法的 #實例一個類 p1 = Person("張三","男",170,60,22) #這就創建了一個張三的實例,這裏要清楚 類實例的過程.屬性和方法的區別 #封裝:這時候就可以看出,將 姓名,性別,身高,體重,年紀 封裝到p1中#當我想知道p1這個人的age的時候 #print(p1.__age)#會提示沒有這個屬性,是因為這個屬性不能直接被外界訪問,只鞥通過類提供的getAge這個方法來獲取 print(p1.getAge())#這樣就獲取到 年紀
類屬性和實例屬性:
#類屬性和實例屬性 class Dog: #這個就是類屬性 legNums = 4 def __init__(self,sex,heigh,weigh,age): #這裏面的就是實例屬性 self.sex = sex self.heigh = heigh self.weigh= weigh self.age = age d1 = Dog("雄",50,30,3) print(d1.legNums)#這裏顯示的是4 #如果d1想改變它的腿數 d1.legNums = 3 print(d1.legNums)#這樣就變成了3 #這裏要明白一點,這裏改變的不是類變量的值,這裏是給d1自己增加了一個屬性,legNums = 3,。這裏要清楚類實例的過程 #訪問實例屬性的時候,先訪問自己的實例中是否有,如果沒有再去類中找是否有,如果還沒有就拋異常
#如果類屬性,是集合列表等,這裏要明白,列表,集合等存儲的方式。其實類中保存的是對列表的引用,其他地方改變列表的時候,類中的這個列表就會改變
繼承
# Author:zylong #這裏要知道一點: class Person: def __init__(self,name,age): #構造器,類通過這個來實例這個類。這個跟實例屬性一樣,如果本類有,就不會去找父類的, # 如果本類有__init__方法,就不會去找父類的,可以再這裏自己調用父類的__init__方法 pass class WhitePerson(Person): def __init__(self,name,age): #通過這樣的方式,python會自動搜素它的父類 super(WhitePerson,self).__init__(name,age) #python 2.x是 深度優先 3以後都是廣度優先
多態:一種接口,多種實現
# Author:zylong #python中多態--一個接口多種實現 class Person(object): def __init__(self,name,age): self.name = name self.age = age def objRun(obj): print("%s is run"%obj.name) class WhitePerson(Person): pass class BlackPerson(Person): pass p1 = WhitePerson("zhang",20) p2 = WhitePerson("yu",21) Person.objRun(p1) Person.objRun(p2)
類,對象 ,封裝,實例變量,類變量,繼承,多態