gpt4 book ai didi

python:如何从类变量访问class.__dict__?

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:16 29 4
gpt4 key购买 nike

我需要定义一个名为“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 端点必须遵循特定协议(protocol)。

有一个为序列化程序定义的元类,它在类创建时调用 __new__() 并且 __new__() 聚合所有字段,在类上定义并填充注册表与他们的领域。因此,我必须在创建类之前定义变量 class。另见:Django REST Framework: how to make verbose name of field differ from its field_name?

最佳答案

你可以这样做:

class MyClass(object):
a = 1
b = 2
vars()['class'] = 3

但是由于 class 是一个保留关键字,所以你必须使用 getattrsetattr 来访问变量,所以 class 仍然是一个字符串。

>>> m = MyClass()
>>> getattr(m, 'class')
3

关于python:如何从类变量访问class.__dict__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38325370/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com