__repr__
関数が返すことができる さまざまな方法があるようです。
多くのものを格納するクラス InfoObj がありますが、そのうちのいくつかは、クラスのユーザーが自分で設定することを特に望んでいません。私はPythonで何も保護されていないことを認識しており、とにかく飛び込んで設定することができますが、それを定義すると、__init__
誰かがそれを見て、それを渡しても問題ないと思い込む可能性が高くなります.
(例: オブジェクトが完全に取り込まれたと判断されたときに検証関数によって設定されるブール値と、そうするのに十分な情報が保存されているときに他の値から計算される値... たとえば、A = B + C のように 1 回A と B が設定され、次に C が計算され、オブジェクトが Valid=True とマークされます。)
以上のことから、__ repr__ の出力を設計する最良の方法はどれでしょうか?
bob = InfoObj(Name="Bob")
# Populate bob.
# Output type A:
bob.__repr__()
'<InfoObj object at 0x1b91ca42>'
# Output type B:
bob.__repr__()
'InfoObj(Name="Bob",Pants=True,A=7,B=5,C=2,Valid=True)'
# Output type C:
bob.__repr__()
'InfoObj.NewInfoObj(Name="Bob",Pants=True,A=7,B=5,C=2,Valid=True)'
...タイプCのポイントは、C++で「プライベート」に設定したすべてのものをコンストラクターへの引数として喜んで取り、クラスを使用するチームメイトにインターフェース関数を使用してそれをセットアップさせることです。彼らのために。その場合、次の目的のために、特定のものを取り込まないコンストラクターと、少し気づきにくい別の関数を定義します。__repr__
違いがある場合は、少なくともより良い方法を考え出さない限り、これらの python オブジェクトを出力を使用してデータベースに保存し、を使用して__repr__
取得することを計画しています。eval()
チームメイトが適切なインターフェイス機能を使用せずに完全なオブジェクトを手動で作成した結果、誰かが何をしたかを理解するまで、1 つのタイプの情報取得が不安定になる可能性があります。