python - 在 setter 中增加类属性属性
问题描述
我理解python中getter/setter的概念。我无法理解的是,我需要为变量本身添加新值,但我不确定如何使用 @property 装饰器来实现这一点。
旧代码实例化一些变量并自增。我正在尝试重构代码并将这些变量移动到一个类中并添加@property/setter,以便我可以将它们作为属性访问。
旧代码:
class ExistingCode(object):
a = 0
b = 0
c = 0
d = 0
bunch of other code..
a += 12
b += 12
c += 12
d += 12
我想做的是:
class Variables(object):
def __init__(self):
a = 0
b = 0
c = 0
d = 0
@property
def a(self):
return self.a
@a.setter
def a(self, x)
a = x
......
我收到“RuntimeError:超出最大递归深度”。请帮忙。
解决方案
我发现了这个问题。主要问题是我对@martineau 提到的属性和属性使用了相同的名称。另外,我在很多地方都想念自己。下面是工作示例。
class Variables(object):
def __init__(self):
self.a = 0
@property
def a(self):
return self.__a
@a.setter
def a(self, x):
self.__a = x
推荐阅读
- java - Spring Batch 未执行 StepExecutionListener beforeStep 或 afterStep 方法
- python - Python 输出固定宽度格式的文本文件,其中包含 SAS 的特殊行
- mule - 组合对象数组的相同键的值
- matlab - 如何将图片的图像设置为左侧有白色边框?
- json - 访问 JSON 对象中的项目以获取获取请求
- java - 如何使用 Instant Java 类解析与 UTC 有偏移的日期时间?
- cuda - 使用 ncu 分析统一内存中的 pagefault
- javascript - Android webview onCloseWindow 没有被触发
- python - 如何先按字母排序,然后按数字排序?
- firebase - 未从 firebase 数据库获取数据。流转换器错误