通过变量设置对象属性会导致无限循环

2024-05-14 04:23:13 发布

您现在位置: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__)。我不知道如何设置这样的值


Tags: keynameinselffieldsmodelifinit
1条回答
网友
1楼 · 发布于 2024-05-14 04:23:13

要解释^{}上的文档,如果__setattr__需要设置属性,可以通过调用基类的__setattr__方法来避免递归:

object.__setattr__(self, name, value)

# Or ...
super().__setattr__(self, name, value)

相关问题 更多 >