2013-10-14 17 views
1

如此多的數據結構和類具有返回類的「視圖」的函數。這意味着它不是獨立的:時,它已經被宣佈python類與視圖

例如即使在類實例做它的變化:

>>> 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,它只是同一個數組上的視圖,只是轉置。

+0

相關:http://stackoverflow.com/questions/8957750/what-are-python-dictionary-view-objects –

+0

是的,但並沒有給我的信息我不知道。這說明它們是什麼,而不是如何爲你自己的給定類創建它們 –

+0

自定義實現'__str__'方法? – Aerovistae

回答

1

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

引用視圖對象不能直接可變的,但不實現 散列();如果底層字典發生了變化,它們的值可能會改變。

在底層字典的唯一要求是它實現 的GetItem(),包含(),ITER(),和len個()。

你可以看到一個簡單的實現有

+0

是的,但這是一個更普遍的問題,而不僅僅是如何爲類似字典的類。 +1,因爲我有種想法,但我看不到一個好的通用應用程序 –