Python类中高效的属性设置
我有一个类可以查询数据库中的it属性。正如您在下面的代码中所看到的,我需要设置一个Python类中高效的属性设置,python,Python,我有一个类可以查询数据库中的it属性。正如您在下面的代码中所看到的,我需要设置一个candidates属性,然后根据candidates属性设置一个prime属性。但是,我希望避免查询数据库两次。最好的办法是什么 class Event(object): def __init__(self): pass @property def candidates(self): # get candidates from db ret
candidates
属性,然后根据candidates
属性设置一个prime
属性。但是,我希望避免查询数据库两次。最好的办法是什么
class Event(object):
def __init__(self):
pass
@property
def candidates(self):
# get candidates from db
return query_result
@property
def prime(self):
# get prime based on complex logic with candidates. Simplified eg:
return self.candidates[0] # hits db again :(
如果我在
candidates
定义中设置了self.prime
,但在candidates
之前调用prime
,我将得到一个错误。最好的方法是什么?将结果缓存在私有变量中
class Event(object):
def __init__(self):
self._candidates = None
@property
def candidates(self):
# get candidates from db
self._candidates = query_result
return query_result
@property
def prime(self):
# get prime based on complex logic with candidates. Simplified eg:
return self._candidates[0]
这假设您希望在每次访问candidates
属性时点击数据库/刷新数据。如果“候选对象”属性不是如此动态,则可以将查询前置。像这样:
@property
def candidates(self):
if self._candidates is None:
# get candidates from db
self._candidates = query_result
return self._candidates