python中的dict子类...和namesapces

时间:2017-07-20 07:13:06

标签: python

我想知道是否有人知道如何打印将显示'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这样的新东西,我不打算做更多的事情)。无论如何,感谢鼓励我更清楚自己的帖子,并帮助我了解更多关于发布程序的信息!

1 个答案:

答案 0 :(得分:2)

听起来你的dict项目与属性混淆。 foo.__dict__为您提供foo的属性。 dict中的键值对不会存储为属性,因此它们不会显示在__dict__中。

如果在对象上设置属性,它将显示在那里。例如,object_of_Hist_class.__dict__将包含instance_var密钥。同样,Hist.__dict__将包含__init__键以及其他一些特殊属性名称。

更多信息:Python 2 data model