gpt4 book ai didi

python - 在 __init__ 中使用 python 属性?

转载 作者:太空狗 更新时间:2023-10-30 03:07:13 28 4
gpt4 key购买 nike

我有一个使用多个 property() 的类。修改文本的字体、大小或字符串等。将需要重新渲染表面以进行缓存。

init 中调用类自己的 property() 的推荐方法是什么?问题是变量没有设置,当时想调用@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

最佳答案

在您的text 属性中,您可以这样写:

try:
return self._text
except AttributeError:
self._text = None
return self._text

然后在实例化之前(或实例化时)不需要设置任何内部属性。

关于python - 在 __init__ 中使用 python 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5685237/

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