[解決済み] Pythonでオブジェクトの完全修飾クラス名を取得する
2022-04-23 02:48:50
質問
ロギングのために、Pythonオブジェクトの完全修飾クラス名を取得したいのですが、どうすればよいですか?(完全修飾とは、パッケージ名とモジュール名を含むクラス名を意味します)。
について知っています。
x.__class__.__name__
しかし、パッケージとモジュールを取得する簡単な方法はありますか?
どのように解決するのですか?
以下のプログラムで
#!/usr/bin/env python
import foo
def fullname(o):
klass = o.__class__
module = klass.__module__
if module == 'builtins':
return klass.__qualname__ # avoid outputs like 'builtins.str'
return module + '.' + klass.__qualname__
bar = foo.Bar()
print(fullname(bar))
と
Bar
として定義されています。
class Bar(object):
def __init__(self, v=42):
self.val = v
の場合、出力は
$ ./prog.py
foo.Bar
もしまだPython 2で行き詰っているのであれば
__name__
の代わりに
__qualname__
これはネストされたクラスにはあまり意味のないことです。
Bar
の中にあるクラス
Foo
として表示されます。
Bar
ではなく
Foo.Bar
:
def fullname(o):
klass = o.__class__
module = klass.__module__
if module == '__builtin__':
return klass.__name__ # avoid outputs like '__builtin__.str'
return module + '.' + klass.__name__
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み] データ型が理解できない
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] Pythonでキャッチした例外の名前を取得する方法は?