0
例外メッセージで関数の引数のリテラル表現を取得したいと思います。 xは任意のオブジェクト型である可能性があるので、この型に対してstrとreprが定義されていない可能性があります。それを達成する方法はありますか?ありがとう。関数の引数のリテラル表現を取得するには?
def f(x, y)
raise Exception("<x> is not valid")
例外メッセージで関数の引数のリテラル表現を取得したいと思います。 xは任意のオブジェクト型である可能性があるので、この型に対してstrとreprが定義されていない可能性があります。それを達成する方法はありますか?ありがとう。関数の引数のリテラル表現を取得するには?
def f(x, y)
raise Exception("<x> is not valid")
Johnrsharpeは、この賞賛の中で、シンプルな書式設定があなたのユースケースでうまくいくはずだと述べています。
たとえば、クラスと関数がある場合。
class Myobj:
pass
def f(x, y):
raise Exception("{!r} is not valid".format(x))
f(Myobj, 1)
あなたは、あなたが呼び出されているオブジェクトが言及されているdesciptionで見ることができる出力と素敵なトレースバック
Traceback (most recent call last):
File "42920465.py", line 9, in <module>
f(Myobj, 1)
File "42920465.py", line 6, in f
raise Exception("{!r} is not valid".format(x))
Exception: <class '__main__.Myobj'> is not valid
を得ることができる必要があります。
'' {!r}は無効です '。形式(x) '?彼らが(賢明な) '__repr__'を定義していないなら、あなたは本当に妥当なリテラルフォームを生成するのに十分な情報を持っていません。いくつかのオブジェクトでは、( '__init__ 'ですべての状態を渡すことができない場合など)全く可能ではないかもしれません。 – jonrsharpe