将 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())
假设我们有一个 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())