如何在一个类中创建多个对象,并在一个循环中为每个对象分配变量?

时间:2019-01-12 21:12:13

标签: python

我正在构建我的第一个Python应用程序,这是一项汽车服务,客户可以在其中请求车辆运输。

我有一个“ Clients.txt”文件(在同一文件夹中),其中包含每个客户端的用户名和密码,并且我已经成功创建了函数“ read_clients()”,该函数打开了该文件并将每个用户名存储在“ client_username”和“ client_password”中的每个密码。

我现在要做的是在“客户端”类中为每个客户端创建一个对象,并自动使每个对象的self.username = client_username和每个对象的self.password = client_password。

我尝试使用for循环。 我认为我不应该调用每个对象c1,因为我认为这只会继续覆盖c1变量,对吗?但是有什么解决方案? 我应该实现一些“计数器”变量,并在每个循环中将其增加1,然后创建变量c“计数器”吗?

我应该为此使用字典吗?也许不是,因为我有一系列函数,例如create_account()和login(),它们将要在每个对象的变量上运行。对吧?

谢谢!

我尝试在“ Clients”类的内部和外部定义read_clients函数,并删除并应用“ self”属性。

class Client:
    def __init__(self, username, password):
        self.username = username
        self.password = password

    def read_clients(self):
        with open("Clients.txt", "r") as file:
            client_list = file.readlines()
            for pre_client in client_list:
                client = pre_client.split(" ")
                client_username = client[0]
                pre_password = client[1]
                client_password = pre_password.strip("\n")
                c1 = Client(client_username, client_password)

2 个答案:

答案 0 :(得分:1)

将您新创建的客户存储在列表中,并返回这样的列表作为结果。如果您没有在self中使用read_clients,则可以使用@staticmethod

将其定义为 static

代码

class Client:
    def __init__(self, username, password):
        self.username = username
        self.password = password

    @staticmethod
    def read_clients():
        with open("Clients.txt", "r") as file:
            client_list = file.readlines()

            # Store your clients here
            clients = []

            for pre_client in client_list:
                client = pre_client.split(" ")
                client_username = client[0]
                pre_password = client[1]
                client_password = pre_password.strip("\n")

                # Save each new client
                clients.append(Client(client_username, client_password))

            # Return the created clients
            return clients

clients = Client.read_clients()

答案 1 :(得分:0)

如果我理解正确,建议您使用列表。 示例代码(在类旁边编写):

 def read_clients():
        retuned_list=[]
        with open("Clients.txt", "r") as file:
            client_list = file.readlines()
            for pre_client in client_list:
                client = pre_client.split(" ")
                client_username = client[0]
                pre_password = client[1]
                client_password = pre_password.strip("\n")
                client = Client(client_username, client_password)
                returned_list.append(client)
        return returned_list