0

inspect を使用して呼び出しモジュールの名前を取得しようとしています。モジュール文字列を返すと、次のようになります。

<module 'mymod.wrapper' from '/usr/local/lib/python2

私はドキュメントを見てきましたが、これの理由が何であるかについては何もわかりませんでした (私は疲れているので、見逃しているかもしれません)。

クラスはこちら

import inspect


class Wrapper():


    def getView(self, view, database=False):

        module = self._getDatabase()
        print(module)

    def _getDatabase(self):

        # Get calling module
        frm = inspect.stack()[1]
        modWhole = str(inspect.getmodule(frm[0]))
        modSplit = modWhole.split('.')
        mod = modSplit[0] + '.' + modSplit[1]
        return mod

また、将来この問題を認識して防止する方法についてのアドバイスも大歓迎です。ありがとう。

4

2 に答える 2

4

inspect.getmodule()名前ではなく、モジュール オブジェクト自体を返します。

交換してみる

str(inspect.getmodule(frm[0]))

inspect.getmodule(frm[0]).__name__

また、inspect.getmodule()返品可能ですのでご注意Noneください。

于 2011-05-31T12:11:14.950 に答える
1

__name__次の属性を使用できます。

>>> import xml
>>> xml.__name__
'xml'
>>> m = __import__('xml')
<module 'xml' from '/usr/lib/python2.7/xml/__init__.pyc'>
>>> m.__name__
'xml'
于 2011-05-31T12:14:50.133 に答える