1. 程式人生 > >Cris 的Python筆記(十一):面向物件三大特徵之多型

Cris 的Python筆記(十一):面向物件三大特徵之多型

'''
Python 的多型:一個物件可以以不同的形態去呈現,實現方式相比 Java更加簡單
因為動態語言的特點,Python 無法實現在程式碼指向前對方法引數進行檢查,所以只要滿足指定方法體的要求,任何資料型別的物件都可以作為該方法的實參
'''

class A:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, name)
: self._name = name a = A("cris") print(a.name) class B: def __init__(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, name): self._name = name def __len__(self): return 20 b =
B('simida') print(b.name) # 只要物件中含有name 屬性,那麼就可以當作引數傳遞 def getName(obj): print(obj.name) getName(a) getName(b) def getName2(obj): if isinstance(obj, A): print(obj.name) getName2(a) getName2(b) # 沒有輸出 # len() # 之所以一個物件能通過len()來獲取長度,是因為物件中具有一個特殊方法__len__ # 換句話說,只要物件中具有__len__特殊方法,就可以通過len()來獲取它的長度
nums = [1, 2, 3] print(len(nums)) # 3 name = 'james' print(len(name)) # 5 print(len(b)) # 20 # 面向物件的三大特徵: # 封裝 # - 確保物件中的資料安全 # 繼承 # - 保證了物件的可擴充套件性 # 多型 # - 保證了程式的靈活性