python - 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'
如何使用编辑源的选项保留对添加属性的引用?
解决方案
该__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"
不过,我不确定这是否是您想要的。
推荐阅读
- reactjs - 使用 React JS 从 CloudFirestore 获取特定帖子
- java - 如何从我的 SQL 数据库中获取信息
- laravel - gcloud应用引擎laravel应用程序cron作业未执行
- flutter - 如何在 Flutter 中按顺序添加新的列表图块?当我添加新的时,它是按随机顺序添加的
- excel - Excel 图表 Y 轴在 360 度回滚回零
- google-chrome - 在 Travis CI 上的 Chrome 和 Firefox 中显示中文、韩文和日文字体
- javascript - 在 moment.js 中获取两次之间的小时数
- node.js - 通过 url 访问节点服务器
- sql - 在 foreach 循环期间获取逗号分隔字段的第一个元素(SQL Razor)
- java - 当我们在 Spring Security 中访问安全 API 时,调用顺序是什么?