字典和点符号[英] Dictionaries and dot notation

问题描述

这对你们大多数人来说可能很明显:

当我有一个对象(类"Foo"的一个实例)时,我可以访问
点符号的属性:

aFoo.bar

但是当我有字典时

aDict = {"bar":"something"}

我要写

aDict["bar"]

如果我想创建一个可以在 dot
中使用的数据结构怎么办?符号而不必创建一个类,即因为那些对象
一点行为都没有?

我知道通过括号表示法访问实例变量会
真的要写成:

aFoo.__dict__[''bar'']

但这并没有让我更进一步,因为我仍然必须
将那个 __dict__ 插入到我的数据结构中,这导致我们
和上面一样的问题.

谁能告诉我这里缺少什么?

推荐答案

Martin Drautzburg 写道:
这对你们大多数人来说可能很明显:

当我有一个对象(类"Foo"的一个实例)时,我可以访问
通过点表示法的属性:

aFoo.bar

但是当我有字典时

aDict = {"bar":"something"}

我要写

aDict["条形"]

如果我想创建一个可以在 dot
中使用的数据结构怎么办?符号而不必创建一个类,即因为那些对象
一点行为都没有?

我知道通过括号表示法访问实例变量会
真的要写成:

aFoo.__dict__[''bar'']

但这并没有让我更进一步,因为我仍然必须
将那个 __dict__ 插入到我的数据结构中,这导致我们
和上面一样的问题.

谁能告诉我我在这里缺少什么?
这个?

http://docs.python.org/ref/attribute-access.html

Stefan

这对你们大多数人来说可能很明显:

当我有一个对象(类"Foo"的一个实例)时,我可以访问
点符号的属性:

aFoo.bar

但是当我有字典时

aDict = {"bar":"something"}

我要写

aDict["bar"]

如果我想创建一个可以在 dot
中使用的数据结构怎么办?符号而不必创建一个类,即因为那些对象
一点行为都没有?

我知道通过括号表示法访问实例变量会
真的要写成:

aFoo.__dict__[''bar'']

但这并没有让我更进一步,因为我仍然必须
将那个 __dict__ 插入到我的数据结构中,这导致我们
和上面一样的问题.

谁能告诉我我在这里缺少什么?

创建一个虚拟类有什么问题?

班级资料:
通过

我的数据=数据()
mydata.foo = ''foo''
mydata.bar = ''bar''

打印 mydata.foo
打印 mydata.bar

丹尼尔

Martin Drautzburg 一个 écrit :
这对你们大多数人来说可能很明显:

当我有一个对象(类"Foo"的一个实例)时,我可以访问
通过点表示法的属性:

aFoo.bar

但是当我有字典时

aDict = {"bar":"something"}

我要写

aDict["条形"]

如果我想创建一个可以在 dot
中使用的数据结构怎么办?符号而不必创建一个类,即因为那些对象
完全没有行为?
继承自dict并实现__getattr__和
的类__setattr__ 应该可以解决问题...

本文地址:https://www.itbaoku.cn/post/1050586.html