Python私有屬性set 和get方法


class Person(object):
#self不是關鍵字,換成其他的標識符也是可以的,但是一般不要改
def run(self):
print("run")
def eat(self,food):
print("eat" + food)
def say(self):
print("hello! my name is %s,i am %d years old" %(self.name,self.age))
def __init__(self,name,age,height,weight,money):#構造函數;
#定義屬性
self.name = name
self.__age__ = age
self._height = height
self.weight = weight
self.__money = money#不被外部直接訪問;相當於_Person__money
#通過內部的方法,去修改私有屬性
#通過自定義的方法實現對私有屬性的賦值與取值
def setMoney(self,money):#對私有屬性的賦值
#數據過濾
if money < 0:
monry = 0
self.__money = money
def getMoney(self):#對私有屬性的取值
return self.__money

per = Person("hanmeimei",20,170,68,1000)
per.setMoney(10)
print(per.getMoney())

'''
如果要讓內部的屬性,不被外部直接訪問,在屬性前加兩個下划線__,
在Python中如果在屬性前加兩個下划線,那么這個屬性就變成私有屬性
'''

'''
不能直接訪問per.__money是因為python解釋器把__money變成
per.__money變成了_Person_money去訪問,但是強烈建議不要這么干
注意:不同的解釋器可能存在解釋的變量不一致。
可以這么訪問對象名._類名__私有屬性 = 新值
per.__money
'''

#注意:在Python中__xx__這樣的屬性不是私有屬性,這叫特殊變量;特殊變量的值可以直接訪問
print(per.__age__)

#在Python中 _xx變量,這樣的實例變量外部也是可以訪問的,
#但是按照約定的規則,當我們看到這樣的變量時,意思是“雖然我可以
#被訪問,但是請把我視為私有變量,不要直接訪問我"
print(per._height)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM