python - 通过变量设置对象属性最终陷入无限循环
问题描述
我正在尝试创建一个简单的模型库
class Model:
_fields = {}
def __init__(self, **props):
import pdb; pdb.set_trace()
for key, value in props.items():
if key in self._fields:
setattr(self, key, value)
def __setattr__(self, name, value):
if name not in self._fields:
return
setattr(self, name, value)
但是,当我设置_fields
列表中的值时,它会进入无限循环(setattr
调用__setattr__
)。我不知道如何设置这样的值。
解决方案
解释一下文档__setattr__
,如果__setattr__
需要设置属性,可以通过调用基类的__setattr__
方法来避免递归:
object.__setattr__(self, name, value)
# Or ...
super().__setattr__(self, name, value)
推荐阅读
- javascript - 附加html中的d3按钮回调
- ruby-on-rails - URI::InvalidURIError: bad URI(is not URI?) when deploying HEROKU app with multiple databases
- android - 无法从 ZXing 调用 IntentIntegrator 类?
- tsql - 构建时出现 SSDT 错误:应为 XML,但遇到的是 JSON
- linux - 如何从 GDB 读取二进制内存转储?
- javascript - 查找字符串 Javascript 的索引
- xml - 使用哪个编辑器制作 .agss 文件
- java - Java 对象重载
- href - 在 url 中引用 kml 字段
- java - 关于运算符或的 java 性能问题