python學習總結(物件導向進階)

來源:互聯網
上載者:User

標籤:底線   info   strong   ack   ==   var   文檔   str   公有   

-------------------類屬性和執行個體屬性關聯性-------------------
1、類屬性和執行個體屬性關聯性
1、執行個體屬性
執行個體對象專屬的屬性
2、類屬性
類名訪問類屬性
3、執行個體中無同名屬性時,可訪問到類屬性,當定義同名執行個體屬性時,則無法訪問
4、常用的尋找指令
1、vars :查看執行個體內屬性
2、dir :顯示類屬性和所有執行個體屬性
3、type :顯示類型

-------------------方法-------------------
1、執行個體方法
隱含的參數為類執行個體self

2、類方法
隱含的參數為類本身cls

3、靜態方法
為隱含參數,主要為了類執行個體也可以直接調用靜態方法

4、類名可以調用類方法和靜態方法,但不可以調用執行個體方法

5、執行個體:
 class Test(object):
def instancefun(self):
print("InstanceFun")
print(self)

@classmethoddef classfun(cls):    print("ClassFun")    print(cls)@staticmethoddef staticfun():    print("StaticFun")

-------------------私人化-------------------
1、xx :公有變數

2、_x :單前置底線,私人化屬性或方法,from somemodule import *禁止匯入,類對象和子類可以訪問

3、__xx :雙前置底線,避免與子類中的屬性命名衝突,無法在外部直接存取(名字重整所以訪問不到)

4、xx :雙前後底線,使用者名稱字空間的魔法對象或屬性。例如:init , __ 不要自己發明這樣的名字

5、xx__ :單後置底線,用於避免與Python關鍵詞的衝突

6、樣本:
#人類
class Person(object):
def init(self,name,age,state):
self.name = name
self._age = age
self.__state = state

    def personshow(self):        print self.name        print self._age        print self.__state    def _work(self):        print(‘in work‘)    def __away(self):        print(‘in away‘)#學生類繼承人class Student(Person):    def setInfo(self,name,age,state):        self.name = name        self._age = age        self.__state = state    def studentshow(self):        print self.name        print self._age        print self.__state#main入口if __name__ == ‘__main__‘:    #建立一個人類的對象    person = Person(‘xiaohao‘, 18, ‘football‘)    person.personshow()    #建立一個學生對象    student = Student(‘xiaohao‘, 18, ‘football‘)    student.setInfo(‘xiaowang‘,25,‘basketball‘)    student.studentshow()    student.personshow()    person._work()    person._Person__away()

-------------------分析一個類-------------------
1、init
1、說明 :構造初始化函數
2、觸發條件 :建立執行個體後,賦值時使用,在new後

2、new
1、說明 :產生執行個體所需屬性
2、觸發條件 :建立執行個體時

3、class
1、說明 :執行個體所在的類
2、觸發條件 :執行個體class

4、str
1、說明 :執行個體字串表示,可讀性
2、觸發條件 :print(類執行個體),如沒實現,使用repr結果

5、repr
1、說明 :執行個體字串表示,準確性
2、觸發條件 :類執行個體 斷行符號 或者 print(repr(類執行個體))

6、del
1、說明 :析構
2、觸發條件 :del刪除執行個體

7、dict
1、說明 :執行個體自訂屬性
2、觸發條件 :vars(執行個體 dict)

8、doc
1、說明 :類文檔,子類不繼承
2、觸發條件 :help(類或執行個體)

9、getattribute
1、說明 :屬性訪問攔截器
2、觸發條件 :訪問執行個體屬性時,優先順序高於dict訪問
3、執行個體 :
#coding=utf-8
class Itcast(object):
def init(self,subject1):
self.subject1 = subject1
self.subject2 = ‘cpp‘

            #屬性訪問時攔截器,打log            def __getattribute__(self,obj):                if obj == ‘subject1‘:                    print(‘log subject1‘)                    return ‘redirect python‘                else:   #測試時注釋掉這2行,將找不到subject2                    return object.__getattribute__(self,obj)            def show(self):                print ‘this is Itcast‘    s = Itcast(‘python‘)    print s.subject1    print s.subject2

10、bases
1、說明 :類的所有父類構成元素
2、觸發條件 :

-------------------屬性保護-------------------
1、執行個體:
#coding=utf-8

class Man(object):    def __init__(self, name, age):        self._name = name        self._age = age    @property    def name(self):        return self._name    @property    def age(self):        return self._age    @age.setter    def age(self, age):        if not isinstance(age, int):            raise ValueError(‘age should be int‘)        if age < 0 or age > 150:            raise ValueError(‘age should be 0-150‘)        self._age = agem = Man(‘jack‘, 32)print(m.name)print(m.age)m.age = 40print(m.age)m.name = ‘rose‘ #此處報錯

-------------------物件導向設計-------------------
1、封裝:

2、繼承:class Cat(Animle) class Animle(object)
1、重寫
class Cat(Animle):
def chi(self):
重寫
Animal.chi(self)

3、多態:
1、虛方法
2、抽象方法
3、介面
4、樣本:
class Dog(Animal):
def chi(self):
print ‘chi‘
def test(animal):
animal.chi()
dog = Dog()
test(dog)

python學習總結(物件導向進階)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.