我正在尝试创建一个函数,该函数需要一个参数,然后从中创建一个全局变量(更确切地说是一个类的实例)。
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"
如果没有更早定义,我不能传递没有''的参数,也不能传递字符串,因为它本身不是变量,因此不能是类的实例。
甚至有可能吗?
这是一个坏主意,但这是如何做。
您需要将名称作为字符串传递。设置属性时,请对包含新对象的局部变量进行操作。
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'