ライブラリの拡張機能を作成していて、新しい関数を基本クラスの関数ポインタの辞書に登録したいと考えています。私の理解では、辞書はクラス内の最上位のスコープにあるため、静的であり、更新可能である必要があります。ただし、update()
拡張クラスで新しい関数を使用して辞書にしようとすると、未定義であることがわかります。次の最小限の例は、エラーを再現します。
def somefunction1(v):
return v
def somefunction2(v):
return v
class SomeClass(object):
dictionary = {'a':somefunction1}
class SomeExtensionClass(SomeClass):
dictionary.update({'b':somefunction2})
実行すると、次のエラーが発生します
9
10 class SomeExtensionClass(SomeClass):
---> 11 dictionary.update({'b':somefunction2})
NameError: name 'dictionary' is not defined
オリジナルを(合理的に)変更できないので、SomeClass
これを回避する方法はありますか?
編集:望ましい結果はSomeExtensionClass
、dictionary={'a':somefunction1, 'b':somefunction2}