Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Image
>>> im = Image.open("test.jpeg")
>>> data = im.load()
>>> data.__setitem__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'PixelAccess' object has no attribute '__setitem__'
>>> help(data)
>>> data.__setitem__
<method-wrapper '__setitem__' of PixelAccess object at 0x7f4d9ae4b170>
這是我見過的最奇怪的事情。幫助()函數之前和之後python對象的屬性行爲不同
我在做與庫PIL的項目。 'data
'是PixelAccess
的一個對象。它在help(data)
中具有__setitem__
的屬性。
你可以做「data[x,y] = value
」分配的像素值在座標(x,y)
Help on PixelAccess object:
class PixelAccess(object)
| Methods defined here:
|
| __delitem__(...)
| x.__delitem__(y) <==> del x[y]
|
| __getitem__(...)
| x.__getitem__(y) <==> x[y]
|
| __setitem__(...)
| x.__setitem__(i, y) <==> x[i]=y
爲什麼不__setitem__
以前help()
功能存在,但之後出現?
它甚至在我執行快遞「data[x,y] = value
」一樣。它僅在help()
函數後出現。
如何解釋呢?
感謝您的幫助。這是我第一次聽說「屬性隱藏」:-) – hbprotoss
請給我看一些關於「attibute hiding」的搜索引用或關鍵詞嗎?我無法在Google上找到很多相關的東西 – hbprotoss
這不是一個常見術語 - 我做了它 - 可以覆蓋類中的內省方法,不會在所有電路中返回結果。我試圖在Python中模擬「私有屬性」時遇到了這種情況:如果調用上下文不是同一個類中的方法,那麼方法會引發錯誤。在這種情況下,更可能是由於類是用C語言編寫的,而且沒有正確初始化 - Python在使用運算符時可以在__getitem__插槽中找到代碼,但是在觸發正確初始化之前什麼也沒有顯示。 – jsbueno