python中的對象

面向對象的三個特點

  • 封裝
    比如對象的方法,我們只需要調用即可,不需要了解裏面的實現細節。
  • 繼承
    一個類可以繼承另外一個類的屬性和方法。
>>> class mylist(list): # mylist類繼承了括號內的list類
	pass
>>> list1 = mylist()  
>>> list1.append(1)
>>> list1
[1]

當定義的方法、變量與父類相同時,覆蓋父類的方法和變量,如果還想使用父類的方法作爲新的方法的一部分,可以使用super()函數實現。

  • 多態
    不同的類可以定義同樣的方法名,但是這些方法名字雖然相同,但是對應的操作不同。
    python支持多重繼承。(括號內放多個類即可)

python中的組合

當一個對象包含不同類別的對象(橫向關係),可以採用組合的方式實現,其實就是將包含的類實例化。
在這裏插入圖片描述

python的self

Python編寫類的時候,每個函數參數第一個參數都是self。(self名稱不是必須的,在python中self不是關鍵詞,你可以定義成a或b或其它名字都可以,但是約定成俗)。
self指代的是類實例化後的具體對象。
參考:Python類中的self到底是幹啥的

python中的魔法方法

  • _init_
class Person:
    def _init_(myname,name):
        myname.name=name
    def sayhello(myname):
        print ('hello')
p = Person('Bill')
print p

對象中的私有名

在Python中定義私有變量只需要在變量名或函數數名前加上-兩個下劃線。私有變量只能內部使用,外部調用不了。
其實python內部中只是將該變量改變了名字,改成“_類名+私有變量名”,調用更改後的變量名,外部一樣可以調用。所以python的私有是僞私有。

類、類對象、實例對象

注意的是,當實例對象的變量沒有重新賦值(重新賦值會創建新的存儲空間),實例對象變量的值會跟類對象的值保持一致,隨類對象的變化而變化。
使用self可以得到實例屬性,實例屬性不受類對象的影響。
在這裏插入圖片描述

類的一些內嵌函數(BIF)

  • issubclass(B,A) ---- 判斷A是否是B的子類。
>>> class A:
	pass
>>> class B(A):
	pass
>>> issubclass(B,A)
True
>>> issubclass(B,B)
True
  • isinstance(b,B) ---- 判斷b是否是B類的實例化對象
  • property() ---- 有點複雜,查百度
  • other
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章