Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将属性写入当前范围之上的范围_Python_Oop_Closures - Fatal编程技术网

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想要的,因为他问起了关于示波器的问题。装饰师是我想要的最好的答案。谢谢!