【问题标题】:how to create multiple object in list using loop如何使用循环在列表中创建多个对象
【发布时间】:2022-01-03 09:42:18
【问题描述】:

所以,我想在每次循环运行时创建不同的对象, 我的对象是 [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")

【问题讨论】:

  • enter_data 中不应存在循环。它只是设置一个对象
  • 在 enter_data(self) 方法中你应该返回类似 return self 的东西
  • 那么,我应该在哪里使用循环呢?

标签: python django list class dictionary


【解决方案1】:

首先将 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")

【讨论】:

    猜你喜欢
    • 2011-12-22
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多