将 class 的内部命名空间作为字典返回

Returning the inner namespace of a class as dictionary

假设我们有一个 class 如下所示:

class P1(object):
    def __init__(self,value=0,src='admin'):
        self.value=value
        self.src=src

是否可以添加一种方法,returns将内部变量命名为字典,名称为名称,值为值,如下所示:

def getDict(self):
    return dictionary(variables)

哪个returns:

{
  'value':0,
  'src':'admin'
}

PS 我知道它可以通过硬编码来降低,我想问一下是否有 Pythonic 的方式通过一个方法调用来完成它。

您可以使用 __dict__:

A dictionary or other mapping object used to store an object’s (writable) attributes.

def getDict(self):
    return self.__dict__

vars() builtin,这只是 returns __dict__ 属性:

return vars(self)

警告:请注意,此 returns 是对实际命名空间的引用,您对字典所做的任何更改都将反映到实例中。

您正在寻找 vars 示例:

return vars(self)

输出:

{'value': 0, 'src': 'admin'}

是的,你可以使用魔法。如果不创建自己的方法,returns 值和 src 的字典。您的代码:

class P1(object):
    def __init__(self,value=0,src='admin'):
        self.value=value
        self.src=src
    def getdict(self):
        return {"value":self.value,"src":self.src}      #manual return of dict


x=P1(5,"user")      #checking for non default values
print(x.getdict())

x=P1()              #checking for default values
print(x.getdict())