1

如此多的数据结构和类具有返回类“视图”的函数。这意味着它不是独立的:即使在声明类实例之后它也会发生变化

例子:

>>> d
{'a': 1, 'c': 3, 'b': 2}
>>> keys = d.keys()
>>> kview = d.viewkeys()
>>> keys
['a', 'c', 'b']
>>> kview
dict_keys(['a', 'c', 'b'])
>>> d['d'] = 4
>>> keys
['a', 'c', 'b']
>>> kview
dict_keys(['a', 'c', 'b', 'd'])

如您所见,dict_keys创建了一个类,该类被认为是字典数据结构中键的“视图”,因为它随着数据结构的更新而更新。

你怎么能看到类?

笔记:

这不是关于字典的问题,而是关于如何为任何类型的类创建“视图”的问题。numpy 数组有一个属性t,它只是同一个数组上的一个视图,只是转置。

4

1 回答 1

1

引用自http://www.python.org/dev/peps/pep-3106/#specification

视图对象不是直接可变的,但不实现 hash ();如果底层 dict 发生突变,它们的值可能会改变。

对底层dict的唯一要求是它实现 了getitem ()、contains ()、iter ()和len ()。

你可以在那里看到一个示例实现

于 2013-10-14T02:44:08.827 回答