【问题标题】:Instantiate object variables from a string [duplicate]从字符串实例化对象变量[重复]
【发布时间】:2017-12-31 00:56:12
【问题描述】:

以伪代码为例:

class Example:

    def __init__(self, dict):
        for key, value in dict.items():
            self.key = value

a = Example({"objectVariable": ["some", "data"]})
print(a.objectVariable)
>>>["some", "data"]

我将如何实现这个?

提前致谢

【问题讨论】:

  • 有什么问题?
  • setattr(self, key, value).
  • 你的问题没有问题。
  • 我很抱歉,我认为我试图完成的功能最好用一个例子来表达。我编辑了问题以澄清我在寻找什么

标签: python python-3.x oop


【解决方案1】:

dict 分配给内置的__dict__ 更简单:

class Example:
   def __init__(self, dict):
     self.__dict__ = dict

【讨论】:

  • self.__dict__.update(dict) 应该是首选,因为它更普遍适用。此外,稍后对传递的dict 的更改将不会反映在实例属性中!
  • 注意不要隐藏内置名称 dict 也很好。
【解决方案2】:

您正在寻找__getattr__,如果插槽不存在,则会调用它。

class Example:
    def __init__(self, dict):
        self.dict = dict
    def __getattr__(self, prop):
        return self.dict[prop]

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    相关资源
    最近更新 更多