【问题标题】:Dynamically add class member using string to name it使用字符串动态添加类成员来命名它
【发布时间】:2012-12-12 06:54:19
【问题描述】:

在 Python 中,我非常清楚可以在定义后向类添加成员这一事实。但是,有没有办法使用字符串的内容来命名成员?

例如,我可以这样做:

class A:
    pass
A.foo = 10

a = A()
print a.foo

但是有没有办法做到这一点:

name = "foo"
class A:
    pass
A.[some trick here(name)] = 10

a = A()
print a.foo

【问题讨论】:

    标签: python class dynamic member


    【解决方案1】:

    使用setattr:

    setattr(A, 'foo', 10)
    

    【讨论】:

      【解决方案2】:

      是的!这可以通过getattrsetattr 的组合来完成。

      setattr(A, 'foo', 10)
      getattr(A, 'foo') // Returns 10
      

      【讨论】:

        【解决方案3】:

        仅供参考 - 您可以使用 vars() 从整个对象的成员生成字典:

        class A:
            pass
        A.foo = 10
        A.bar = 'hello'
        
        a = A()
        b = vars(a)
        print(b['bar'])  # prints hello
        

        【讨论】:

          猜你喜欢
          • 2022-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-30
          • 1970-01-01
          • 1970-01-01
          • 2011-07-05
          • 2012-04-03
          相关资源
          最近更新 更多