方法一:property函数法
class Person: def __init__(self): self.__age=0 def __get_age(self):#获取函数 return self.__age def __set_age(self,x):#修改函数 self.__age=x def __del_age(self):#删除函数 del self.__age age = property(__get_age,__set_age,__del_age) #把方法变成属性方式
#参数1 获取方法;参数2 修改方法;参数3 删除方法 p = Person() p.age = 10 print(p.age) del p.age
方法二:装饰器法
class Person: def __init__(self): self.__age=0 @property # 把下面的函数伪装成属性,只能用于类中的函数并没有参数的函数 def age(self):#获取函数 return self.__age @age.setter # 下面是修改函数,只能一个参数 def age(self,x):#修改函数 self.__age=x @age.deleter # 删除这个属性 def age(self):#删除函数 del self.__age p = Person() p.age = 10 print(p.age) del p.age
方法三:创建描述器类
必须是新式类
class Age: #创建描述器类-包含修改,获取,删除内置函数 def __set__(self, instance, value): #self保存的是age;instance保存的是p ,value保存的是数据值10 instance.v=value #保存数据-增加一个对象属性用来保存数据 def __get__(self, instance, owner): # owner保存的是实例age所在的类 return instance.v def __delete__(self, instance): del instance.v class Person: age=Age() #利用描述器创建属性
p = Person() p.age=10 #调用描述器的__set__函数 print(p.age)
天子骄龙