gpt4 book ai didi

python - 在 Python 中生成包含对象属性的字典

转载 作者:行者123 更新时间:2023-11-30 23:54:14 27 4
gpt4 key购买 nike

我目前正在尝试编写一段代码,将给定类实例的所有属性转储到字典中,以便我可以在不更改源对象的情况下更改它们。有没有一种方法可以做到这一点,或者也许是我可以复制和访问的内置字典?

我真正做的是创建一个特殊的类,从不同其他类的实例复制实际属性(及其相应的值)。基本上它会模仿任何类的任何实例。

例如,对象 x 具有属性 x.name 和 x.number,分别为“Joe”和 7。我希望我的新对象模拟对象 y 复制属性,以便 y 现在具有属性 y.name 和 y.number、“Joe”和 7。

谢谢!

编辑: 发布此内容后不久我就找到了我要找的东西!

Python dictionary from an object's fields

这几乎就是我需要知道的全部内容。

最佳答案

为什么不在“模仿”对象上编写一个 __getattr__() (或 __getattribute__())方法,仅在请求属性时执行此操作,而不是复制属性?除了其他好处之外,这会将属性保留为可执行代码(而不是复制其返回值),并且即使在创建模拟对象后将新属性添加到模拟对象中,这也将起作用。 (另外,我会称其为包装器或代理对象,而不是模仿者。)类似于:

class Wrapper(object):
def __init__(self, obj):
self.__wrapped__ = obj
def __getattr__(self, key):
return getattr(self.__wrapped__, key)

l = [3, 2, 1]
w = Wrapper(l)
print w.index(2) # calls through to l.index()

关于python - 在 Python 中生成包含对象属性的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5266978/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com