У меня есть класс, использующий несколько свойств ().Изменение шрифта, размера или строки текста и т. Д. Потребует повторного рендеринга поверхности для кэширования.
Каков рекомендуемый способ вызова собственного свойства класса () внутри init?Проблема в том, что переменная не была установлена, в то время как я хочу вызвать @property DrawText.text
Если я непосредственно установил ._text, он запускается:
class DrawText(object):
"""works, Except ignores text.setter"""
def __init__(self):
# self.text = "fails" # would fail if here
self._text = "default"
self.text = "works"
@property
def text(self):
'''plain-text string property'''
return self._text
@text.setter
def text(self, text):
if self._text == text: return
self._text = text
self.dirty = True # .. code re-creates the surface
Это такжеработает, и ближе, но будет ли он работать с несколькими экземплярами, используя разные данные?
class DrawText(object):
"""works, Except ignores text.setter"""
def __init__(self):
DrawText.text = "default"
self.text = "works"
@property
def text(self):
'''plain-text string property'''
return self._text
@text.setter
def text(self, text):
if self._text == text: return
self._text = text
self.dirty = True # .. code re-creates the surface