2010-02-27 58 views
1

我不斷收到以下錯誤:爲什麼我有屬性時會出現AttributeError?

AttributeError: Caribou instance has no attribute 'on_key_up' 

的問題是,我敢肯定我確實有這種屬性...

下面是一些摘錄從我的代碼(從caribou.py) :

def on_key_up(self, event): 
    if event.event_string == "Shift_R": 
    _r_shift_down = False 
    elif event.event_string == "Shift_L": 
    _l_shift_down = False 

這是導致該錯誤的行:

pyatspi.Registry.registerKeystrokeListener(caribou.on_key_up, mask=None, kind=(pyatspi.KEY_RELEASED_EVENT,)) 

有人看到我在做什麼錯了嗎?

謝謝!

編輯:哎呦 - 這裏就是我創建的馴鹿實例:

caribou = Caribou() 
+0

你應該向我們展示整個文件。 – 2010-02-28 02:28:44

回答

4

的OP中提到的評價是dir(caribou)給他:

['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__'] 

所以肯定着眼於點caribou模塊 - 沒有別的通常有__builtins__等錯誤消息明確提到Caribou instance - 所以我想象必須之間發生dir呼叫和以下嘗試訪問caribou.on_key_up

顯然,OP是有一些多次使用的是心愛的caribou標識符(在某些時候它綁定到一個馴鹿實例​​,但在其他時候,它顯然是一個模塊,堪與OP不提caribou.py這顯然將導入時成爲名爲caribou的模塊)。

所以我的建議是澄清命名。例如,使用

caribou_instance = Caribou() 

,而不是一個多值綁定到caribou名稱,和替換被認爲是實例(不是模塊)與caribou_instancecaribou所有用途。這可能會給你一個不同的錯誤,這可能會提供更多信息。

+0

謝謝!就是這樣! – Justin 2010-02-28 07:02:32

+0

@ FallSe7en,不客氣! – 2010-02-28 07:03:36

1

你是不是顯示你的import語句或如何「馴鹿」的實例正在創建。我的猜測是你試圖通過caribou中的caribou.on_key_up 模塊,而不是實例

+0

我沒有導入馴鹿,因爲我在同一個.py文件中定義了類。至於如何創建實例,請參閱編輯。 感謝您的回覆! – Justin 2010-02-27 23:44:28

2

如果您打印目錄(馴鹿)會發生什麼?你看到你的方法嗎?

+0

這是我所看到的: [ '__builtins__', '__doc__', '__file__', '__name__', '__PACKAGE__', '__path__'] 這很奇怪,但因爲我應該叫一類 '馴鹿' (這是on_key_up函數的地方)和一個函數'usage' – Justin 2010-02-28 01:07:11

+0

你有一個文件叫做.... Caribou.py?在同一個文件夾中? 尋找任何文件稱爲進口馴鹿你看到什麼? – UberJumper 2010-02-28 01:08:21

+0

是的 - 該文件被稱爲「caribou.py」。在那個文件裏面是'Caribou'類和函數'usage'。 – Justin 2010-02-28 01:11:04

相關問題