Как создать несколько объектов в списке с помощью цикла
Итак, я хочу создавать разные объекты при каждом запуске цикла, мой объект - [name, age, dob], который добавляется в пустой список
data = []
Я использую класс
class PersonsData(object):
# Object constructor
def __init__(self):
print("Person Data")
self.name = ''
self.age = 0
self.doB = 0
# Input Method
def enter_data(self):
size = int(input("Enter the number of data"))
for i in range(size):
self.name = str(input("Enter Your Name" + " ").upper())
try:
self.age = int(input("Enter Your Age" + " "))
except:
print("\n**Enter value in Number**")
self.age = int(input("Enter Your Age" + " "))
self.doB = (input("Enter Your DOB" + " "))
print("\n")
# Display Method
def display(self):
print("Name:", self.name)
print("Age:", self.age)
print("DOB:", self.doB)
проблема в том, что вместо создания нового объекта он просто перезаписывает другой, поэтому я могу создать новый объект
моя вторая половина кода
while True:
print()
print("""
1.Add New Detail
2.Display Detail
3.Quit
""")
choice = int(input("Enter Choice:" + " "))
if choice == 1:
info = PersonsData()
info.enter_data()
print(info.name)
data.append(info)
print(data)
elif choice == 2:
for i in data:
print("--------------------------------")
i.display()
print("--------------------------------")
elif choice == 3:
quit()
else:
print("Invalid choice")
Прежде всего, переместите цикл for изнутри enter_data
персональных данных внутрь выбора 1, чтобы он начал создавать объекты персональных данных на основе введенного размера
Таким образом, он добавит ваши уникальные объекты персональных Данных в список данных
Вот правильный код после изменений
data = []
class PersonsData(object):
# Object constructor
def __init__(self):
print("Person Data")
self.name = ''
self.age = 0
self.doB = 0
# Input Method
def enter_data(self):
self.name = str(input("Enter Your Name" + " ").upper())
try:
self.age = int(input("Enter Your Age" + " "))
except:
print("\n**Enter value in Number**")
self.age = int(input("Enter Your Age" + " "))
self.doB = (input("Enter Your DOB" + " "))
print("\n")
# Display Method
def display(self):
print("Name:", self.name)
print("Age:", self.age)
print("DOB:", self.doB)
while True:
print()
print("""
1.Add New Detail
2.Display Detail
3.Quit
""")
choice = int(input("Enter Choice:" + " "))
if choice == 1:
size = int(input("Enter the number of data"))
for i in range(size):
info = PersonsData()
info.enter_data()
print(info.name)
data.append(info)
print(data)
elif choice == 2:
for i in data:
print("--------------------------------")
i.display()
print("--------------------------------")
elif choice == 3:
quit()
else:
print("Invalid choice")