一只鳥,長得像鴨子就是鴨子,叫聲像鴨子就是鴨子,走起來像鴨子就是鴨子
歸一化,統一接口
2.類的約束:控制子類定義一些方法
-
方法一:推薦使用
raise:主動拋出異常
-
方法二:
from abc iport ABCMeta,abstractmethod
抽象類,接口類:指定一些規則
3.super
super(類名,self)從當前mro中查找類名的下一個類
super時按照mro的順序進行繼承
4.類的私有成員
以__開頭的變量就是私有的
_desires = "有欲望" (程序員之間預定俗稱)類私有的屬性
私有屬性和方法在當前類中可以查看及使用
子類不能繼承父類的私有方法和屬性
私有的目的就是保護數據的安全性
強制查看私有方法或屬性:(但是非常不推薦使用)
_類名私有變量名
_類名私有方法名
class Human:
live = '有理想' # 類共有的屬性
__desires = '有欲望' # (程序級別)類私有的屬性
_desires = '有欲望' # (程序員之間約定俗稱)類私有的屬性
def __init__(self,name,age,sex,hobby):
self.name = name
self.age = age
self.sex = sex # 對象的共有的屬性
self.__hobby = hobby # 對象的私有屬性
def func(self):
# 類內部可以查看對象的私有屬性
print(self.__hobby)
def foo(self):
# 類內部可以查看類的私有屬性
print(self.__desires)
def __abc(self): # 私有方法 只有內部可以使用
print('is abc')
obj = Human('beauty',28,'man','woman')
print(obj.name)
print(Human.live)
Huamn.live = '無腦'
print(Human.live)
obj.__abc() # 會報錯 因為外部不可以調用類的私有方法
print(Human.__desires)