Python 将属性写入当前范围之上的范围
我想知道是否有一种方法可以通过编程将属性写入运行函数的父类。我正在寻找类似以下的东西Python 将属性写入当前范围之上的范围,python,oop,closures,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" 我不清楚你在追求什么。这里有两个尝试来回答你的问题 您可
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"
我不清楚你在追求什么。这里有两个尝试来回答你的问题 您可以制作一个装饰器,向类添加属性:
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()
恐怕没有直接的方法。您可以尝试使用
inspect
模块,但它提供的最有趣的(在您的情况下)信息是调用方对象的名称(A
或B
),我不确定您想要什么。但是,如果您只想自定义类的创建(比如,在创建类时向类写入属性),则可以使用元类而不是函数调用。我猜这不是OP想要的,因为他问起了关于示波器的问题。装饰师是我想要的最好的答案。谢谢!