版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/95734311
可用__setattr__()和__getattr__()方法实现。前者只处理程序访问指定属性且此属性不存在的情形,后者是只要程序试图对指定属性赋值时总会触发该方法。
class User:
def __init__(self,name,age):
self.name=name
self.age=age
def __setattr__(self,name,value):
if name=='name':
if len(value)>8:
self.__dict__['name']=value
else:
raise ValueError('name长度错误')
u=User('hello',2019)
u.name='aha'#引发异常
也可以用@property装饰器来修饰方法,使之成为属性。
class Cell:
@property
def state(self):
return self._state
@state.setter
def state(self,value):
if len(value)>4:
self._state=value
else:
self._state='aaa'
c=Cell()
c.state='nande'
print(c.state)
独孤尚良dugushangliang——著