#-*-encoding:utf-8-*-
class Person():
# 只允许拥有私有的name和age属性
__slots__ = (
'__name', '__age')
def __init__(
self,name
,age):
self.__name=name
self.__age=age
@property
def name(
self):
return self.__name
@
name.setter
def name(
self,name):
self.__name=name
@property
def age(
self):
return self.__age
@
age.setter
def age(
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()
转载请注明原文地址: https://www.6miu.com/read-54002.html