传入参数列表以创建相应类的对象

  • 本文关键字:对象 创建 参数 列表 python
  • 更新时间 :
  • 英文 :


请帮忙!我无法传递参数列表来创建适当的类。read_package((函数接受训练代码及其参数列表作为输入。函数的主体应该包含一个字典,该字典映射了每种锻炼类型需要调用的锻炼代码和类。函数必须确定训练的类型,并创建相应类的对象,将第二个参数中接收到的参数传递给它。函数应该返回此对象。

packages = [
('SWM', [720, 1, 80, 25, 40]),
('RUN', [15000, 1, 75]),
('WLK', [9000, 1, 75, 180]),
]

def read_package(workout_type: str, data: list):
dict = {
'SWM': Swimming(data),
'RUN': Running(data),
'WLK': Walking(data)
}
for x, y in dict.items():
if x == workout_type:
return print(y)
else:
None

for workout_type, data in packages:
training = read_package(workout_type, data)

如果我理解正确,那么所有三个带有参数的列表都会依次转移到每个类。如何将每个列表传递给正确的类?

File "c:Devtask.py", line 133, in read_package
'SWM': Swimming(),
TypeError: __init__() missing 5 required positional arguments

您的dict正在尝试创建具有相同参数的每个类类型的实例。由于每个类采用不同的参数,因此失败。相反,让您的查找字典(dict是一个坏名字(包含,而不是类实例。然后,您可以通过使用*运算符展开data来实例化正确的类。

def read_package(workout_type: str, data: list):
WORKOUT_CLASS_MAP = {
'SWM': Swimming,
'RUN': Running,
'WLK': Walking
}
return WORKOUT_CLASS_MAP[workout_type](*data)

此外,return print(...)是无意义的。我假设您想要返回您创建的实际对象。

最新更新