3 回答

TA貢獻1830條經驗 獲得超9個贊
get_baz您可以簡單地緩存第一次調用時的值。
class ExampleClass:
_baz = None
def __init__(self, foo):
self.foo = foo
def calc_bar(self):
baz = self.get_baz()
return baz * self.foo
@classmethod
def get_baz(cls):
if cls._baz is None:
cls._baz = <result of query>
return cls._baz

TA貢獻1829條經驗 獲得超6個贊
get_baz您可以簡單地緩存第一次調用時的值。
class ExampleClass:
_baz = None
def __init__(self, foo):
self.foo = foo
def calc_bar(self):
baz = self.get_baz()
return baz * self.foo
@classmethod
def get_baz(cls):
if cls._baz is None:
cls._baz = <result of query>
return cls._baz

TA貢獻1744條經驗 獲得超4個贊
一種選擇是將其定義baz為None,然后僅在其為 時才進行get_baz()更新。bazNone
class ExampleClass:
baz = None
def calc_bar(self):
return self.get_baz() * 2
@classmethod
def get_baz(cls):
if cls.baz is None:
cls.baz = 'hello' # <result of query>
return cls.baz
ec = ExampleClass()
print(ec.baz)
# Output: None
print(ec.calc_bar())
# Output: hellohello
print(ec.baz)
# Output: hello
添加回答
舉報