問題タブ [repr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonでの__repr__()の正しい使い方?
その中のすべての要素を印刷するために使用したいコンテナクラスがあります。
それらをファイルまたはコンソールに出力したいと思います。
エレメント ( Patch
) とコンテナ クラスを以下のようにレイアウトしました__repr__(self)
。
の目的を理解できていないので__repr__()
、ここでの使用は問題ないかどうか疑問に思っています。
意図したとおりに動作しますが、スタイル/使用法が問題ないかどうかコメントしてください.
python - cのchar*バッファのPythonスタイルrepr?
ほとんどの場合、私はPythonで作業しているため、repr()
任意のバイトの文字列が渡されると、人間が読める16進形式で出力される関数を高く評価しています。最近、私はCでいくつかの作業を行っていて、Pythonrepr
関数を見逃し始めています。私はインターネットでそれに似たもの、できれば次のようなものを探していましたが、void buffrepr(const char * buff, const int size, char * result, const int resultSize)
運が悪かったのですが、これを行う簡単な方法を知っている人はいますか?
python - オブジェクトの辞書で str を呼び出す
私はそのようなオブジェクトの辞書を持っています オブジェクトの
{'name1':oject_instance_1,'name2':oject_instance_2,'name3':oject_instance_3}
私のクラス定義では、次のよう__str__() method
に と__repr__()
メソッドの両方を定義しました:
重要な場合、self.id は文字列、self.genes はリスト、self.length は int です。
問題は、私が得たこの辞書を印刷するときです:
しかし、次のようなループで印刷します
正常に動作します。
理由はありますか?ありがとう!
string - In Python, how can I print a dictionary containing large numbers without an 'L' being inserted after the large numbers?
I have a dictionary as follows
Doing either str(d) or repr(d) results in the following output
How can I get str, repr, or print to display the dictionary without it adding an L to the numbers?
I am using Python 2.7
python - 長い表現文字列の処理
長い文字列をどのように処理し__repr__
ますか?ベストプラクティスはありますか?私は次のものを持っているとしましょう。
また、表現文字列に改行を追加すると便利ですか?
python - Pythonアクセントは悪い習慣を深刻にしますか?
repr(x)
私は最近、Pythonで次の略記を使用できることを理解しました。
しかし、実際にこれを見たことはめったにありません。それは悪い習慣または非Python的であると考えられていますか?または、それがめったに使用されない他の理由はありますか?
python - __repr__ 対 repr
2つの方法に違いはありますか?
例えば、
彼らは同じことをしているように見えますが、なぜ誰かが通常の表現よりも後者を使いたいのでしょうか?
python - 「より良い」__repr__()を持つこの抽象基本クラスは危険ですか?
__repr__()
クラスのデフォルトがあまり有益ではないことは私を悩ませます:
...だから私はそれを改善する方法を考えてきました。pickle
少し検討した後、プロトコルの__getnewargs__()
メソッドを活用するこの抽象基本クラスを思いつきました。
その使用法の簡単な例を次に示します。
...そして結果として生じるrepr()
振る舞い:
これで、Pythonがデフォルトでこれをすぐに行わない理由の1つがわかります。すべてのクラスにメソッドを定義するように要求することは、メソッド__getnewargs__()
を定義することを期待する(ただし要求しない)よりも負担が大きくなります__repr__()
。
私が知りたいのは、それはどれほど危険で壊れやすいのかということです。一方で、Repro
インスタンスにそれ自体が含まれている場合、無限の再帰が発生することを除いて、ひどく間違っている可能性のあるものは考えられません...しかし、上記のコードを醜くするという犠牲を払って、それは解決可能です。
他に何を逃しましたか?
python - __repr__() が非文字列を返しました
だから私は辞書とその値を引き出したいクラスメソッドを持っています:
このような場合、目的の出力が得られます。
トレースバック エラーも発生します。
出力する代わりに値を返すと、次のようになります。
デフォルトの「システム」メソッドではないカスタムメソッドを作成すると、正常に機能します...(そして、デフォルトにする必要があります)
python - Python eval(repr(object)) - 無効な構文
私はトランプのデッキを構築するのをいじっています。eval(repr(object)) はオブジェクトスタック オーバーフロー トピックと同等である必要があることを読んだところに問題があります。
カード用に Card クラスと Deck クラスの 2 つのクラスを実装しました。それぞれに repr メソッドがあり、実際にオブジェクトを作成する構文にできるだけ近づけようとしました。カードとデッキの init と repr のコード:
ここにエラーがあります:
Card クラスの表現方法が原因だと単純に推測しています。{!s} を {!r} に置き換えてみましたが、変更されませんでした。私はそれがカードクラスであるという事実をハードコーディングすることを考えていましたが、それを行うための特定の方法があることを望んでいました.
解決するには: {!r} ではなく {!s} (引用符を削除するため) の.__name__
後に追加して使用する必要がありましたself.__class__