Я пытался понять и использовать декоратор свойства в основном для того, чтобы сделать свойство доступным только для чтения. Я видел, что каждый раз, когда свойство используется, оно входит в декоратор свойства.
В моем примере он входит в декоратор три раза, один раз для каждого отпечатка:
class PropTest:
def __init__(self,x):
self._x = x
@property
def x(self):
return self._x
def check(self):
print(self.x + 1)
print(self.x + 2)
print(self.x + 3)
t = PropTest(3)
t.check()
Если я определю свойство в __init__
, оно будет введено только один раз.
class PropTest:
def __init__(self,x):
self.x = x
def check(self):
print(self.x + 1)
print(self.x + 2)
print(self.x + 3)
t = PropTest(3)
t.check()
Я неправильно использую декоратор? Есть ли проблемы с производительностью при использовании?
L.E. :
Вот как я пытаюсь использовать декоратор свойств. Я не хочу читать Excel каждый раз, когда используется это свойство, и хочу, чтобы информационный кадр был только для чтения.
@property
def rules_df(self):
"""
:return: A dataframe that contains the rules for labels
"""
self._rules_df = pd.read_excel(self.cfg_file)
return self._rules_df