我想从一个类的属性中获取所有的值,所以如果我的程序出错了,我可以查看json文件,查看类的值,然后发现问题。
class Example:
def __init__(self, x, y):
self.x = x
self.y = y
e = Example(1, 2)
data = []
for attribute_name in dir(e):
attribute = getattr(b, attribute_name)
if not callable(attribute):
data.append({"name":attribute_name, "value":attribute.value})
print(data)
字符串
我想要的是:
[{"name":"x", "value":1}, {"name":"y", "value":2}]
型
1条答案
按热度按时间9o685dep1#
你有三个错误。
1.正如Pranav Hosangadi指出的,
getattr(b, attribute_name)
有一个错别字。应该是getattr(e, attribute_name)
。1.你不必要地调用
attribute.value
。attribute
就足够了。1.仅使用
if not callable(attribute)
将输出[{'name': '__module__', 'value': '__main__'}, {'value': 1, 'name': 'x'}, {'name': 'y', 'value': 2}]
。__module__
不是您想要的,所以另外检查属性名称中是否有__
。下面是完整的更正代码:
字符串