gpt4 book ai didi

class - 仅在第一次调用变量时才起作用的 Pythonic 方式

转载 作者:太空狗 更新时间:2023-10-29 22:01:31 25 4
gpt4 key购买 nike

我的 Python 类有一些变量需要在第一次调用时进行计算。后续调用应该只返回预先计算的值。

我不想浪费时间做这项工作,除非用户确实需要它们。那么是否有一种干净的 Pythonic 方式来实现这个用例?

我最初的想法是第一次使用 property() 调用函数,然后覆盖变量:

class myclass(object):
def get_age(self):
self.age = 21 # raise an AttributeError here
return self.age

age = property(get_age)

谢谢

最佳答案

class myclass(object):
def __init__(self):
self.__age=None
@property
def age(self):
if self.__age is None:
self.__age=21 #This can be a long computation
return self.__age

Alex 提到你可以使用 __getattr__,这就是它的工作原理

class myclass(object):
def __getattr__(self, attr):
if attr=="age":
self.age=21 #This can be a long computation
return super(myclass, self).__getattribute__(attr)

__getattr__() 当属性在对象上不存在时被调用,即。第一次尝试访问 age 时。每次之后,age 都存在,所以 __getattr__ 不会被调用

关于class - 仅在第一次调用变量时才起作用的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com