34
  • コードが実行されているファイルの名前
  • コードが実行されているクラスの名前
  • コードが実行されているメソッドの名前(クラスの属性)
4

4 に答える 4

33

それぞれの例を次に示します。

from inspect import stack

class Foo:
    def __init__(self):
        print __file__
        print self.__class__.__name__
        print stack()[0][3]

f = Foo()
于 2009-05-21T17:34:00.637 に答える
11
import sys

class A:
    def __init__(self):
        print __file__
        print self.__class__.__name__
        print sys._getframe().f_code.co_name

a = A()
于 2009-05-21T17:34:10.277 に答える
5
self.__class__.__name__  # name of class i'm in

残りの場合、sysおよびtraceモジュール

http://docs.python.org/library/sys.html http://docs.python.org/library/trace.html

さらに詳しい情報: https ://mail.python.org/pipermail/python-list/2001-August/096499.html および http://www.dalkescientific.com/writings/diary/archive/2005/04/20/ trace_python_code.html

トレースバックモジュールがそれを処理できるので、エラー報告のためにそれが必要でしたか?

http://docs.python.org/library/traceback.html

于 2009-05-21T17:28:33.487 に答える
3

非常に注意してください。検討:

class A:
    pass

B = A
b = B()

ここの「クラス名」は何bですか?Aですか、それともBですか?なんで?

重要なのは、知る必要も気にする必要もないということです。オブジェクトはそれが何であるかです:その名前はめったに役に立ちません。

于 2009-05-21T21:39:35.370 に答える