这段代码的if instance is None: return self不会执行吧?

看到文章
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
阅读 2.2k
1 个回答
class Circle:
    def __init__(self, radius):
        self.radius = radius

    @lazyproperty
    def area(self):
        print('Computing area')
        return 3.1415 * self.radius ** 2

print(Circle.area)  # 输出 'triggered'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进