并不是所有的屬性都可以被外部訪問(wèn)的,這種不能被外部訪問(wèn)的屬性稱(chēng)為私有屬性。私有屬性是以雙下劃線(xiàn)'__'開(kāi)頭的屬性。
# 類(lèi)私有屬性 class Animal(object): __localtion = 'Asia' print(Animal.__localtion) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: type object 'Animal' has no attribute '__localtion'
# 實(shí)例私有屬性 class Animal(object): def __init__(self, name, age, localtion): self.name = name self.age = age self.__localtion = localtion dog = Animal('wangwang', 1, 'GuangDong') print(dog.name) # ==> wangwang print(dog.age) # ==> 1 print(dog.__localtion) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Animal' object has no attribute '__localtion'
在外部訪問(wèn)私有屬性將會(huì)拋出異常,提示沒(méi)有這個(gè)屬性。
雖然私有屬性無(wú)法從外部訪問(wèn),但是,從類(lèi)的內(nèi)部是可以訪問(wèn)的。私有屬性是為了保護(hù)類(lèi)或?qū)嵗龑傩圆槐煌獠课廴径O(shè)計(jì)的。
請(qǐng)給Animal類(lèi)的__init__方法中添加name和age參數(shù),并把a(bǔ)ge綁定到__age屬性上,看看外部是否能訪問(wèn)到。
參考答案:
class Animal(object): def __init__(self, name, age): self.name = name self.__age = age cat = Animal('Kitty', '3') print(cat.name) print(cat.__age)
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)