你好。我正在尝试使用循环创建对象的多个唯一实例。这是我的代码:
class Person:
def __init__(self, name, age, hobby, instrument):
self.name = name
self.age = age
self.hobby = hobby
self.instrument = instrument
def printInfo(self):
print(f"Name: {self.name}\nAge: {self.age}\nHobby: {self.hobby}\nInstrument: {self.instrument}")
print()
names = ["Adonis", "Michael", "George", "Towney", "Katrina", "Slestria", "Harry"]
ages = [17, 18, 16, 16, 17, 18, 16]
hobbies = ["Karate", "Music", "Knitting", "Programming", "Skiing", "Egging homes", "Doing magic"]
instruments = ["Alto saxophone", "Clarinet", "Oboe", "Trombone", "Flute", "Trumpet", "Percussion"]
而不必执行以下操作:
p1 = Person("Adonis", 17, "Karate", "Alto saxophone")
p2 = Person("Michael", 18, "Music", "Clarinet")
p3 = Person("George", 16, "Knitting", "Oboe")
.
.
.
我想知道是否有更简单的方法。最后,我希望能够对所有对象执行此操作:
p3.printInfo()
Name: George
Age: 16
Hobby: Knitting
Instrument: Oboe
我不知道这是否可能。我对类和对象还是陌生的,所以非常感谢一些批评和正确方向的踢!
将人员分配给各个变量是一个坏主意。您可以使用列表推导构建人员列表:
persons = [Person(*info) for info in zip(names, ages, hobbies, instruments)]
在这里,zip(...)
将您的四个列表组合成一个 4 元素元组列表。列表中的每个元组作为四个单独的参数依次传递给构造函数(*
将四个项目的元组转换为四个参数)。
persons[3].printInfo()
#Name: Towney
#Age: 16
#Hobby: Programming
#Instrument: Trombone
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句