2024-09-30 22:23:30 发布
网友
我想创建一个包含类的一些实例的对象。该对象应该是实例的某种列表泛化。例如,我有以下课程:
class car: def __init__(self, prize, color) self.prize = prize self.color = color
现在我想有一个对象cars,它包含类car的许多实例,但我可以像car的实例一样使用它,即cars.prize应该返回我在该对象cars中收集的所有实例的奖品列表
cars
cars.prize
您可以创建一个新的class car_list(),其中包含一个汽车列表(您可以附加、删除等)。在该类中,添加一个get_prizes()方法,该方法通过迭代列表返回奖品列表。例如:
class car_list()
get_prizes()
class car_list(): def __init__(self, cars): self.cars = cars # This is a list def get_prizes(self): return [car.prize for car in self.cars]
代码中的小错误:在__init__方法定义行的末尾需要一个:: def __init__(self, prize, color):
__init__
:
def __init__(self, prize, color):
下面是cars的一个实现,它满足您的需求。使用@property装饰器可以访问作为对象属性的方法:
@property
class car: def __init__(self, prize, color): self.prize = prize self.color = color class cars: def __init__(self, list_of_cars): for one_car in list_of_cars: assert isinstance(one_car, car) # ensure you are only given cars self.my_cars = list_of_cars @property def prize(self): return [one_car.prize for one_car in self.my_cars] @property def color(self): return [one_car.color for one_car in self.my_cars] >>> a = car('prize1', 'red') >>> b = car('prize2', 'green') >>> c = car('prize3', 'azure') >>> carz = cars([a,b,c]) >>> carz.prize ['prize1', 'prize2', 'prize3'] >>> carz.color ['red', 'green', 'azure']
如果需要,可以在每个对象中添加更多的输入检查,但这是基本框架。希望有帮助,快乐编码
我想你可以这样做:
class Cars: def __init__(self, list_of_cars): self.cars_list = list_of_cars self.prize = [car.prize for car in self.cars_list] self.color = [car.color for car in self.cars_list]
让我们看看如何使用它:
list_of_cars = [Car(1000, "red"), Car(2000, "blue"), Car(3000, "Green")] x = Cars(list_of_cars) print(x.prize) # [1000, 2000, 3000] print(x.color) #["red", "blue", "Green"]
您可以创建一个新的
class car_list()
,其中包含一个汽车列表(您可以附加、删除等)。在该类中,添加一个get_prizes()
方法,该方法通过迭代列表返回奖品列表。例如:代码中的小错误:在
__init__
方法定义行的末尾需要一个:
:def __init__(self, prize, color):
下面是
cars
的一个实现,它满足您的需求。使用@property
装饰器可以访问作为对象属性的方法:如果需要,可以在每个对象中添加更多的输入检查,但这是基本框架。希望有帮助,快乐编码
我想你可以这样做:
让我们看看如何使用它:
相关问题 更多 >
编程相关推荐