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

时间:2018-11-04 10:25:52

标签: python class oop object instance

我有两个课

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)]

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

class Bike:

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

因此,如果cars_list刚好在创建新的Bike之前发生更改,则在cars_list中调用当前的Bike。我知道如何执行此操作的方法是在Bike其中

添加另一个参数
def __init__(self, position, cars_list):          
            self.position = position
            for i in cars_list:
                # continue with code

,并且在呼叫自行车时,将cars_list作为参数传递。但是,是否有一种方法可以将当前cars_list存储在类Car中,然后在该类中创建一个名为get_current_instances的方法,以便可以在Bike类中对其进行调用?

1 个答案:

答案 0 :(得分:0)

这是类属性的经典用例,也是Car上的类方法-实际上,您要存储和检索有关Car类的数据。

例如:

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