创建作为参数传递的全局变量

问题描述 投票:0回答:1

我正在尝试创建一个函数,该函数需要一个参数,然后从中创建一个全局变量(更确切地说是一个类的实例)。

class SomeClass():
    #some stuff defined inside

def create(crt, **kwargs):
    globals()[crt] = SomeClass()
    for key, value in kwargs.items():
        if crt.__dict__.__contains__(key):
            crt.__setattr__(key, value)
    return crt

我感兴趣的输出将是:

create(foo, class_attribute=10)

这将使我能够:

foo.other_attribute = "whatever"

如果没有更早定义,我不能传递没有''的参数,也不能传递字符串,因为它本身不是变量,因此不能是类的实例。

甚至有可能吗?

python dynamic parameters global-variables
1个回答
1
投票

这是一个坏主意,但这是如何做。

您需要将名称作为字符串传递。设置属性时,请对包含新对象的局部变量进行操作。

def create(crt, **kwargs):
    obj = SomeClass()
    for key, value in kwargs.items():
        if obj.__dict__.__contains__(key):
            obj.__setattr__(key, value)
    globals()[crt] = obj
    return obj

create('foo', class_attribute=10)
foo.other_attribute = 'whatever'
© www.soinside.com 2019 - 2024. All rights reserved.