如何从另一个 class 调用一个 class 的所有实例?

How to call all instances of a class from another class?

我有两个classes

class Car:

    def __init__(self, position):  
        self.position = position


class Bike:

    def __init__(self, position):          
        self.position = position

在一个单独的文件中,我正在创建多辆汽车和自行车:

cars_list = [Car(position[i]) for i in range(position_list)]

每次我在当前时刻创建一个 Bike 实例时,我都想在 Bike class 中调用和使用 cars_list

class Bike:

    def __init__(self, position):          
        self.position = position
        for i in cars_list:
            # continue with code

因此,如果 cars_list 在创建新的 Bike 之前发生变化,则在 Bike 中调用当前的 cars_list。我知道如何做到这一点的方法是将另一个参数添加到 Bike where

def __init__(self, position, cars_list):          
            self.position = position
            for i in cars_list:
                # continue with code

并且在调用 bike 时,cars_list 作为参数传递。然而,有没有办法将当前 cars_list 存储在 Class Car 中,然后在 class 中创建一个名为 get_current_instances 的方法,以便可以在Bike class?

这是 classic class 属性的用例,以及 Car 上的 class 方法 - 字面意思是您想要存储和检索有关 Car class 的数据.

例如:

class Car:
    car_list = []

    def __init__(self, position):  
        self.position = position
        Car.car_list.append(self)

   @classmethod
   def get_current_instances(cls):
       return Car.car_list


class Bike:
    def __init__(self, position):          
        self.position = position

   # Example method to show how the Car class is used
   def move(self, position):
       cars = Car.get_current_instances()
       for car in cars:
           if car.position == position:
              self.crash() # Arrgh a crash between the bike and car
           else:
               self.position = position