上一篇文章 介绍了 classmethod staticmethod,这一次再介绍一下 property,他们都是属于Python自带的装饰器
class Foo(object):
def __init__(self):
self._size = 100
@property
def size(self,s):
print("111111111111")
return self._size,200
@size.setter
def size(self,value):
print("222222222222")
self._size = value
@size.deleter
def size(self):
print("33333333333333333")
del self._size
obj = Foo()
ret = obj.size
print(ret)
定义的时候 要加上装饰器,而且只有一个self参数,没有其他参数
调用size的时候 直接obj.size,不用加()
@property
def size(self,box):
return self.box,200
obj = Foo()
ret = obj.size
print(ret)
obj = Foo()
ret = obj.size(100)
print(ret)
依然还是报错。。。所以定义的时候 还是按照property的要求来。。。
property的好处:
调用的时候 就跟获取属性值一样
property 的 getter,setter 和 deleter 方法同样可以用作装饰器:
obj = Foo()
obj.size = 100
del obj.size