首页 > 解决方案 > Python 用另一个 dict 扩展 __dict__ 对象

问题描述

假设我有一个类,Person我想为每个实例分配新属性,但我也想跟踪所说的新属性,例如:

class Person:
    def __init__(self, **kwargs):
        self.props = {}
        
        for arg in kwargs:
            self.props[arg] = self.__dict__[arg] = kwargs[arg]

但例如,以下代码将说明为什么这不能满足我的需要:

person = Person(name='Tomer')
person.props['name'] = 'Michael'
print(person.name)
# >> 'Tomer'

如何使用编辑源的选项保留对添加属性的引用?

标签: python

解决方案


__dict__对象是您的类或实例的字典对象。不需要直接操作它,因为类可以自己处理设置属性。您可以直接设置属性而无需中间props

class Person: 
    def __init__(self, **kwargs): 
        for k, v in kwargs.items(): 
            setattr(self, k, v)

然后你可以说:

person = Person(name='Tomer')
print(person.name)  # output: "Tomer"
person.name = 'Michael'
print(person.name)  # output: "Michael"

不过,我不确定这是否是您想要的。


推荐阅读