将属性写入当前范围以上的范围

时间:2014-04-12 04:40:03

标签: python oop closures

我想知道是否有办法以编程方式将属性写入运行函数的父类。我正在寻找类似以下的东西。

def add_items():
    setattr(ParentClass, 'foo', 'bar')

class A(object):
    add_items()

class B(object):
    add_items()


a = A()
b = B()
print a.foo
"bar"
print b.foo
"bar"

1 个答案:

答案 0 :(得分:2)

我不清楚你在追求什么。以下是两次尝试回答您的问题。

你可以制作一个装饰器,为类添加属性:

def add_items(cls):
    cls.foo = "bar"
    return cls

@add_items
class A(object):
    pass

另一方面,如果你的函数是一个方法,它可以向类实例添加它想要的任何属性:

class B(object):
    def add_items(self):
        self.foo = 'Baz'

b = B()
b.add_items()