python物件導向編程

來源:互聯網
上載者:User

標籤:instance   sel   dir   嚴格   int   直接   方式   增加   練習   

1.類和執行個體

  類是建立執行個體的模板,而執行個體是一個個具體的對象,每個執行個體有自己的資料,且相互獨立互不影響;

       方法是和執行個體綁定的函數,與普通函數不同,類的方法可以直接存取執行個體的資料;

        通過在執行個體上調用方法,就可以實現對執行個體內部資料的操作

         和靜態語言不同,Python允許對執行個體變數綁定任何資料,也就是說,對於兩個執行個體變數,雖然它們都是同一個類的不同執行個體,但擁有的變數名稱都可能不同:

2. 訪問限制

    Class內部屬性如果不想讓外部直接存取,可以在變數前加__(兩個底線),如__name,而_name、__name__等都是可以直接存取的。

    設定成私人變數不代表不能訪問,python解譯器在其前邊加上了類名,通過這種方式就可以進行訪問,如bob._Student__name (bob是類Student的執行個體)

 

3.繼承和多態:

   繼承可以利用或重寫父類的方法。

  當子類和父類都存在相同的run()方法時,我們說,子類的run()覆蓋了父類的run(),在代碼啟動並執行時候,總是會調用子類的run()。這樣,我們就獲得了繼承的另一個好處:多態

這就是動態語言的“鴨子類型”,它並不要求嚴格的繼承體系,一個對象只要“看起來像鴨子,走起路來像鴨子”,那它就可以被看做是鴨子。

Python的“file-like object“就是一種鴨子類型。對真正的檔案對象,它有一個read()方法,返回其內容。但是,許多個物件,只要有read()方法,都被視為“file-like object“。許多函數接收的參數就是“file-like object“,你不一定要傳入真正的檔案對象,完全可以傳入任何實現了read()方法的對象。

4.擷取對象資訊:

    type(),types,dir(),isinstance(),getattr(),settattr(),hasattr()

    總是優先使用isinstance()判斷類型,可以將指定類型及其子類“一網打盡”。

    getattr(),settattr(),hasattr()可以判斷執行個體中是否存在相應變數、方法,並且可以填寫相應的變數和方法。

5.類屬性和執行個體屬性

   執行個體可以通過bob.name 或setattr()等方式添加屬性,而類可以通過類內代碼增加屬性,如果類和執行個體屬性同名那優先調用執行個體的屬性。

   #練習題 為了統計學生人數,可以給Student類增加一個類屬性,每建立一個執行個體,該屬性自動增加:
class Student(object):
count = 0
def __init__(self,name):
self.name = name
Student.count = Student.count+1 # 注意是類Student.count而不是執行個體selt.count

a = Student(‘bob‘)
print(Student.count)
a = Student(‘bob‘)
print(Student.count)
a = Student(‘bob‘)
print(Student.count)

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.