我想知道是否有人知道如何打印将显示'apple'和'$ 1.79'的键值对的命名空间。
我明白如果我取消注释
#print(object_of_Hist_class)
我会看到我要问的数据......但我很好奇我是否能做到
print(something.__dict__)
(显然,我不知道应该是什么)看到'apple'和'$ 1.79'的数据。这是我正在谈论的代码:
class Hist(dict):
def __init__(self, instance_var):
self.instance_var = instance_var
object_of_Hist_class = Hist('cha cha cha')
object_of_Hist_class['apple'] = '$1.79'
#print(object_of_Hist_class)
print(object_of_Hist_class.__dict__)
print(Hist.__dict__)
print(dict.__dict__)
上面的原始帖子
以下解决方案
以下是我要找的...... 首先,我将重新创建以前使用vars
的结果print(vars(object_of_Hist_class))
print(vars(Hist))
以下是我在第一次提出这个问题时所寻找的内容(特别是我希望在显示命名空间内容的词典中找到的“数据”,可以在以下打印的最右边看到):
print(vars())
print(locals())
print(globals())
感谢以下提供此信息的帖子: What's the difference between globals(), locals(), and vars()?
如果你无法运行上述版画,最后三个版本都会为词典提供最终的键值对:'object_of_Hist_class':{'apple':'$ 1.79'}
这就是我要找的东西。
我是新的堆栈溢出帖子(以及像子类化dict这样的新东西,我不打算做更多的事情)。无论如何,感谢鼓励我更清楚自己的帖子,并帮助我了解更多关于发布程序的信息!
答案 0 :(得分:2)
听起来你的dict项目与属性混淆。 foo.__dict__
为您提供foo
的属性。 dict中的键值对不会存储为属性,因此它们不会显示在__dict__
中。
如果在对象上设置属性,它将显示在那里。例如,object_of_Hist_class.__dict__
将包含instance_var
密钥。同样,Hist.__dict__
将包含__init__
键以及其他一些特殊属性名称。
更多信息:Python 2 data model