# 把得到的属性值的方法上@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方法过滤数据