相互に (多くの場合循環) 参照を持つオブジェクトをいくつか作成する必要があります。一般に、複数のオブジェクトが関与する可能性がありますが、ここでは、相互に参照する 1 組の車だけが必要な単純なケースを 1 つ示します。
class Car:
def __init__(self, position, speed):
self.position = position
self.speed = speed
def set_reference(self, other_car):
self.other_car = other_car
# ...
def main():
# ...
car1 = Car(pos1, spd1)
car2 = Car(pos2, spd2)
car1.set_reference(car2)
car2.set_reference(car1)
他の車への参照がない車は有効なオブジェクトではありません。理想的には、メソッドset_reference
内から実行したいと思います。__init__
これは、より安全 (無効なオブジェクトを使用する可能性がない) であり、クリーン (すべての初期化が__init__
期待どおりに実行される) の両方になります。
この目標を達成するきちんとした解決策はありますか? 一度に 2 台の車を作成してもかまいませんが、各車はスタンドアロンのエンティティであるため、それ自体がインスタンスである必要があります。
また、循環参照が GC にとって厄介であることも認識しています。私はそれを処理します。
使用事例:
各車は、他の車のバックアップとして機能します。車のインスタンスは「スマート」です。つまり、多くの作業を実行できます。車のインスタンスがそのバックアップを認識していない場合、毎回外部からの参照を必要とせずに車がアクションを完了できないため、面倒です。