89
78

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

実行中の関数・メソッド名を取得したい

Last updated at Posted at 2015-04-09

この記事は 2015 年 (古いッ!) に書いたのですが、定期的に見られている方が多いようなので、正しいやり方 (inspect module) を追記しました。

2024年 修正版

素直に inspect module を使いましょう〜笑

次のコードで、呼び出し元のフレームコードの定義名 (※関数中で呼べば「関数名」) を取得できます。

import inspect
inspect.currentframe().f_code.co_name

実際に関数 example() の中で呼んでみた例。 (python console)

>>> import inspect

>>> def example():
...     print(inspect.currentframe().f_code.co_name)

>>> example()

example

元の記事 (2015, Python2)

  • 2015年に書いてるので、Python2想定です
  • PEP8 で定義されてるのですが、アンダーバー _ から始まる関数は、内部向け (他言語で言うところの private or system internal) です。本来直接呼び出すのは NG なので 黒魔術 と称しています...笑

毎回忘れるので、メモ。

sys._getframe().f_code.co_name

簡単な関数を書いて試してみる。

>>> def printFuncName():
...     print sys._getframe().f_code.co_name
... 
>>> printFuncName()

printFuncName

自分はこういう場面でよく使います。

from abc import abstractmethod

class SuperClass(object):

    @abstractmethod
    def implementMe():
        raise NotImplementedError( sys._getframe().f_code.co_name )
89
78
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
89
78

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?