私有屬性和私有方法是只希望在對(duì)象內(nèi)部使用床蜘,不希望在外界被使用的屬性和方法粥诫。創(chuàng)建格式為:
__屬性名
__方法名
當(dāng)私有屬性和私有方法被創(chuàng)建以后在外界無法通過常規(guī)的方式被直接調(diào)用油航,但可以在對(duì)象內(nèi)部任意使用。
class Demo:
def __init__(self):
self.num = 100
# 定義一個(gè)私有屬性
self.__num = 200
# 定義一個(gè)私有方法怀浆,該方法中使用私有屬性
def __sum(self):
return self.__num + self.num
# 定義一個(gè)方法谊囚,該方法使用私有方法
def sum(self):
sum_1 = self.__sum()
return self.__num + sum_1
d = Demo()
# print(d.__num) 該行代碼會(huì)報(bào)錯(cuò)怕享,無法直接在外界調(diào)用私有屬性
# print(d.__sum()) 該行代碼會(huì)報(bào)錯(cuò),無法直接在外界調(diào)用私有方法
print(d.sum()) # 輸出500秒啦,證明私有屬性和方法可以在對(duì)象內(nèi)部使用
其實(shí)在python中只是偽私有屬性及偽私有方法熬粗,若想要在外界直接調(diào)用可以通過這樣一種方式:
對(duì)象.(下劃線)類名__屬性或方法名;
例如:
d._Demo__num
d._Demo__sum()
class Demo:
def __init__(self):
self.num = 100
# 定義一個(gè)私有屬性
self.__num = 200
# 定義一個(gè)私有方法余境,該方法中使用私有屬性
def __sum(self):
return self.__num + self.num
# 定義一個(gè)方法驻呐,該方法使用私有方法
def sum(self):
sum_1 = self.__sum()
return self.__num + sum_1
d = Demo()
print(d._Demo__num) # 輸出為:200
print(d._Demo__sum()) # 輸出為:300
同時(shí)還應(yīng)該注意父類的私有屬性和私有方法并不能在子類中直接調(diào)用,只能通過調(diào)用父類的共有方法來間接的訪問父類的私有屬性和私有方法芳来。