Python私有属性@property方法

# 把得到的属性值的方法上@property
# 在设置属性值的方法上@属性名.setter
# 两个方法的名字一致,都是属性名
#先写@property再写@属性名.setter
class Person(object):
def __init__(self,name,age):
#在定义对象属性的时候,私有属性不加__
self.name = name
self.age = age
@property
#相当于getName()方法
def name(self):
return self.__name
#但是返回的时候还是要self.__私有属性名

@name.setter#相当于setName()方法
def name(self,name):
if len(name) > 6:
print("非法")
else:
self.__name = name
#赋值的时候也要self.__属性名 = 属性名

p1 = Person("张三12358",13)
print(p1.name)

'''
总结:1、在定义对象属性的时候不需要在对象属性加__
2、要先定义@property相当于get方法
3、再定义@属性名.setter相当于set方法
4、在对象调用的时候直接是对象名.属性名
'''
注意:这种方法设置私有属性,在创建对象实例初始化赋值时就会调用@属性名.setter方法过滤数据
原文地址:https://www.cnblogs.com/guojie-guojie/p/9268467.html