【发布时间】:2020-10-22 10:53:53
【问题描述】:
我正在尝试创建将字典作为输入的类,然后将其用作同一个类的输入(有效地使用类方法创建嵌套字典):
这是我目前所拥有的:
class popl(object):
def __init__(self,d):
self.__dict__= d
dic = {'x':[1,2,3], 'y':[4,5,6]}
# Inner dict
inner = popl(dic)
现在我可以:inner.x 访问元素。
然后我希望能够创建一个由inner 组成的新字典outer,并将元素访问为:outer.inner.x
我试过了:
outer=popl(inner)
但我收到一个错误:
TypeError: __dict__ must be set to a dictionary, not a 'popl'
知道如何实现我想要的吗?我需要一个嵌套类吗?
【问题讨论】:
-
包含内部字典的“外部”字典的键是什么?这个额外的课程需要什么?您已经可以在没有对象开销的情况下创建嵌套字典。
-
popl接受字典,而不是popl对象。popl(inner)应该如何知道inner是键"inner"的值? -
@gallen 外部字典的键将是“内部”。现在
x应该可以通过outer.inner.x访问。这一切的原因是它比输入 external['inner']['x'] 更干净 -
@MisterMiyagi 好的,我真的是 python 新手!对不起,如果我的问题有点傻!那么我如何使用键
inner制作popl(inner)? -
顺便说一句,不要这样做
self.__dict__= d,这会破坏一个非常有用的优化(共享密钥命名空间字典...)。相反,使用self.__dict__.update(d)此外,没有嵌套类在这里根本没有帮助。除了可能将一个类保留在另一个类命名空间中之外,它们实际上没有任何用途,但它们本身并没有真正提供任何功能
标签: python class dictionary