4

ユーザーが使用できるシェルを提供するwxPythonアプリを作成しています。(これはwx.lib.shell.PyShell、wxPythonに付属しているシェルです。)

問題は、このシェルで作成された定義の.__module__属性が悪いことです。例えば:

>>> def f(): 0
... 
>>> f.__module__
>>> f.__module__ is None
True
>>> class A(object):
...     pass
...     
>>> 
>>> A.__module__
'__builtin__'

.__module__これら両方のオブジェクトの属性はである必要があると思います__main__。わからない。Noneしかし、それは間違いなくまたはのいずれかであってはなりません__builtin__

.__module__シェルにこれらの関数とクラスに適切な属性を与えるにはどうすればよいですか?

4

2 に答える 2

1

IDLEとwxPythonデモのPyShellデモでは、次のようになります。

>>> def f(): 0

>>> f.__module__
'__main__'
>>> f.__module__ is None
False
>>> class A(object):
        pass

>>> A.__module__
'__main__'

それは私には正しく機能しているようです。自分のマシンで何をしているのかわかりません。WindowsXPでPython2.5、wxPython2.8.10.1を使用しています。

于 2010-12-06T20:01:42.073 に答える
0

これが起こった理由は、私がカスタムのローカルdictを使用していて'__name__'、それに意味のあるものを入れることを怠ったためです。'__name__'PyShellに指定するローカル辞書にアイテムを配置すると、その値を使用し.__module__て、シェルで定義された関数とクラスの属性が設定されます。

于 2010-12-07T17:30:14.310 に答える