我需要定义一个名为“ class”的类变量。我想直接在类名称空间中执行此操作,而不是在类方法中执行此操作。显然,我不能直接说:
class MyClass(object):
a = 1
b = 2
class = 3
所以,我想做类似的事情:
class MyClass(object):
a = 1
b = 2
self.__dict__["class"] = 3
其中的“ self
”应替换为对该类的引用。那么,如何从类名称空间引用一个类呢?
注意:这个问题似乎是人为的,但这是出于实际目标。
实际上,MyClass
它是Django REST Framework序列化程序,我需要在其上定义“类”字段,因为该REST端点必须遵循某种协议。
有一个为Serializers定义的元类,它调用__new__()
类创建并__new__()
聚合在类中定义的所有字段,并使用它们填充字段注册表。因此,我必须class
在创建类之前定义变量。另请参阅:Django REST框架:如何使字段的详细名称与其字段名称不同?
您可以这样做:
class MyClass(object):
a = 1
b = 2
vars()['class'] = 3
但是,由于class
是保留关键字,因此您必须使用getattr
和来访问变量setattr
,因此class
仍为字符串。
>>> m = MyClass()
>>> getattr(m, 'class')
3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句