Pythonicとは何かに関する別の質問です!この場合のアプリケーションドメインはネットワークアルゴリズムです(ノード、エッジ、ダイクストラ、そのようなもの...)。私は以前に強く型付けされた言語でしかコード化していないものです。ネットワークデータ構造上のメソッドを扱うPythonの方法
一方、Pythonでは、私はクラスを持っていますNet
;このクラスの単一インスタンスはネットワークを表します。私はクラスEdge
を持っています。これはネットワークの各エッジに対してインスタンス化されています。各Edge
インスタンスには、とりわけユニークなid
があります。
場合によっては、関連するEdge
インスタンスを参照してエッジを削除したい場合があります。それ以外の時は、id
を使ってEdgeを削除したいと思っています。正直言って、私はどの変数がEdges
であり、どれがids
であるかを追跡し始めています。私は、彼らが実際のエッジオブジェクトまたはちょうどであるかどうかを知って、より良い私の変数に名前を付ける -
システムハンガリアン記法を使ってスタート:私は、私はこの仕事:-P
ためにだから私は2つのソリューションを提案しているC++を好んだと思います私が望むエッジのID。強力なタイピングを実装する - 以外のものを明示的に拒否するには、
remove_edge
(Net
のメソッド)を明示的に拒否します。ラッパー関数remove_edge_id
を作成してid
からEdge
を検索し、remove_edge
を呼び出します。この関数は同様にid
以外のものを拒否します。ダックタイピングを使用します。引数が
id
かEdge
かどうかを確認してください。ちょうど良いことをしてください。remove_edge
いつものことですか?
あなたが両方のオブジェクト参照を使用して自分自身を発見している理由をバックステッピングと尋ねる価値があるかもしれませんエッジを追跡するためのID。それはC + +の習慣からホールドオーバーですか?他のものを常に変更して、どちらか一方を使用することは可能ですか? –
あなたが言及しているのは「ネットワーク」ではなく「グラフ」です。 –
フェアポイント。私はアプリケーションドメインの用語で盲目になっています;-) –