Python訪問類的私有屬性和私有方法的正確姿勢

2021-07-31 16:33:42 字數 1236 閱讀 1399

#-*-encoding:utf-8-*-

classperson():

# 只允許擁有私有的name和age屬性

__slots__ = ('__name'

, '__age')

def__init__(self

,name,age):

self.__name=name

self.__age=age

@property

defname(self):

returnself.__name

@name.setter

defname(self

,name):

self.__name=name

@property

defage(self):

returnself.__age

@age.setter

defage(self

, age):

self.__age = age

def__str__(self):

return'姓名 '+self.__name+'

\n年齡'+str(self.__age)

def__dosomething(self):

print('hello dosomething()')

if__name__=='__main__':

zhangsan=person('張三'

,20)

print(zhangsan)

# 直接訪問物件的私有的__age屬性會出錯

# print('直接訪問物件的私有的__age屬性'+str(zhangsan.__age))

# 訪問私有屬性 正確姿勢

print(zhangsan._person__age)

# 直接訪問物件的私有方法__dosomething方法會出錯

# zhangsan.__dosomething()

# 訪問私有方法的正確姿勢

zhangsan._person__dosomething()

python的類訪問控制 私有屬性

一 訪問控制私有屬性 class person def init self,name,age 19 self.name name self.age age def growup self,i 1 if i 0 and i 150 self.age 1p1 person tom p1.growup 2...

Python 類的私有屬性和私有方法

xx 公有變數 xx 公有變數或方法,不能通過import匯入其他模組 只有模組內部使用 類物件和子類可以訪問 xx 私有變數或方法 偽私有 類外部不能直接訪問。xx 公有變數或方法,子類可以訪問。魔法方法或屬性 例如 init 不推薦這樣命名。xx 公有變數或方法。一般為了避免和python關鍵字...

python類私有屬性

python中沒有private關鍵字,想要建立乙個類私有的變數需要通過命名規則來實現 在變數名之前加兩個下劃線 name,則在類外部就不能直接通過例項.name訪問,具體原理python編譯器將其命名修改為了 類名 name,通過其實例項.類名 name還是可以訪問 class test obje...