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

2024-04-23 11:07:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两节课

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实例时,我都希望调用并使用cars_list类中的Bike。你知道吗

class Bike:

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

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

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

调用bike时,cars_list作为参数传递。但是,有没有办法将当前的cars_list存储在类Car中,然后在该类中创建一个名为get_current_instances的方法,以便可以在Bike类中调用它?你知道吗


Tags: 方法inselfforinitdefwithposition
1条回答
网友
1楼 · 发布于 2024-04-23 11:07:31

这是类属性的经典用例,也是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

相关问题 更多 >