【问题标题】:Create Python class where the attributes is defined dynamically创建动态定义属性的 Python 类
【发布时间】:2011-03-01 11:57:27
【问题描述】:

对不起,如果以前有人问过这个问题。是否可以在 Python 中动态创建类的 __init__ 方法中未定义属性的类。

例如这个类

class Person(object):
  def __init__(self):
    ...

我可以像这样在初始化期间动态放入属性:

person = Person(name='Joe')

并像这样访问它:

person.name
>>> Joe

谢谢

【问题讨论】:

    标签: python metaprogramming


    【解决方案1】:

    最简单的方法是将关键字参数dict分配给类的__dict__属性:

    class Person(object):
        def __init__(self, **kw):
            self.__dict__ = kw
    person = Person(name='Joe')
    print person.name
    

    打印

    Joe
    

    要在创建对象后添加属性,请使用

    def add_attributes(self, **kw):
        self.__dict__.update(kw)
    

    您也可以在构造函数中使用.update()

    【讨论】:

      【解决方案2】:

      这可以通过使用descriptors (detailed explanation) 来实现。这也使您能够在创建对象后添加属性。

      【讨论】:

        猜你喜欢
        • 2020-01-08
        • 2019-05-02
        • 1970-01-01
        • 1970-01-01
        • 2012-12-20
        • 2017-07-14
        • 1970-01-01
        相关资源
        最近更新 更多