上一次我们用属性来给属性添加方法(name属性给name属性添加写入于读取方法),是在最后用了property关键字,现在同样有一个等价的方式,把来给属性创建方法,那就是运用装饰器。可读性可能更好。
“用装饰器” class man: @property def foo(self): return self._name "实现取出属性的值的方法名上修饰器名用property" @foo.setter def foo(self,name): if not type(name)==str: return Exception("输入字符串类型") self._name=name @foo.deleter def foo(self): print("你将要消除名字") del self._name a=man() a.foo="zhou" "注意是调用foo赋值" print(a.foo) del a.foo zhou 你将要消除名字 Process finished with exit code 0在这里 property函数作为一个装饰器于foo=property(_get)语法是相同的。 装饰器于这里我们在方法的上部将foo函数标记为一个属性,而不是在定义完之后在转换。同时也意味着我们不需要再为定义一个个属性二创建以下划线开头的私有方法了。 两者主要区别在可读性上。
“用属性给属性添加方法,两者实现完全相同” class man: def _get(self): return self._name def _set(self,name): if not type(name)==str: return Exception("输入字符串类型") self._name=name def _del_name(self): print("你将要消除名字") del self._name foo=property(_get,_set,_del_name) a=man() a.foo="zhou" print(a.foo) del a.foo zhou 你将要消除名字