1

次のエラーが発生し続けます。

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()
4

3 に答える 3

4

dir(caribou)OPは、彼に与えるコメントで言及しています:

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

したがって、モジュールであるその時点を確実に調べます-通常は他に何もありません.エラーメッセージには a が明確に記載されているため、その呼び出しと次のアクセス試行の間に何か他のことが起こっているに違いないと思います.caribou__builtins__Caribou instancedircaribou.on_key_up

明らかに、OPはその最愛のcaribou識別子を複数回使用しています(ある時点でCaribouインスタンスにバインドされていますが、それ以外の場合は明らかにモジュールであり、実際にOPは、インポート時caribou.pyに明らかに名前が付けられたモジュールになることを言及していますcaribou)。

したがって、命名を明確にすることをお勧めします。たとえば、

caribou_instance = Caribou()

もう 1 つの値をcaribou名前にバインドする代わりにcaribou、(モジュールではなく) インスタンスであると想定されるすべての使用を に置き換えますcaribou_instance。これにより、より有益な別のエラーが発生する可能性があります。

于 2010-02-28T04:13:02.393 に答える
2

dir(caribou) を出力するとどうなりますか? あなたの方法はわかりますか?

于 2010-02-28T00:38:51.487 に答える
1

インポートステートメントや、インスタンスがどのように「カリブー」されているかを示していません。私の推測では、caribou のように caribou.on_key_up をインスタンスではなくモジュールに渡そうとしています。

于 2010-02-27T23:31:48.467 に答える