看到文章
https://cloud.tencent.com/developer/article/1345536
上代码
class lazyproperty:
def __init__(self, fun):
self.fun = fun
def __get__(self, instance, owner):
if instance is None:
return self
value = self.fun(instance)
setattr(instance, self.fun.__name__, value)
return value
调用者
class Circle:
def __init__(self, radius):
self.radius = radius
@lazyproperty
def area(self):
print('Computing area')
return 3.1415 * self.radius ** 2
我的疑问是,lazyproperty里面的
if instance is None:
return self
多此一举,在任何情况下都不会触发,我修改一下
class lazyproperty:
def __init__(self, fun):
self.fun = fun
def __get__(self, instance, owner):
if instance is None:
print('triggered')
return self
value = self.fun(instance)
setattr(instance, self.fun.__name__, value)
return value
请你在用Circle类的时候,触发
if instance is None:
print('triggered')
return self