Как сделать так, чтобы автоматически создавался объект userN = User() (где N - порядковый номер), после того, как новый пользователь зарегистрируется?

Рейтинг: 0Ответов: 1Опубликовано: 26.07.2023
class User():
def __init__(self, name = 'null', password = 'null', email = 'null'):
    self.name = name
    self.password = password
    self.email = email

def signup(self):
    alphabet = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'

    #Создаём логин
    temp_name = input("Придумайте логин: ")

    #Создаём пароль
    while True:
        flag = 0         #flag == 1 - не идём дальше, flag == 0 - идём дальше
        temp_password = input("Придумайте пароль: ")

        for x in range(0, len(temp_password)):
            if temp_password[x] not in alphabet:
                print("Используйте только цифры и латинские буквы!")
                flag = 1
                break;
        if flag == 1:
            continue;

        if len(temp_password) < 8:
            print("Длина пароля должна составлять не менее 8 символов!")
            flag = 1

        if flag == 1:
            continue;
        else:
            break;

    #Создаём электронную почту
    while True:
        flag = 0
        temp_email = input("Введите электронную почту: ")
        if "@" not in temp_email and "." not in temp_email:
            print("Неверный адрес электронной почты!")
            flag = 1

        if flag == 1:
            continue;
        else:
            break;

    #Записываем данные
    self.name = temp_name
    self.password = temp_password
    self.email = temp_email

Ответы

▲ 0

Вообще, не совсем понятно, зачем плодить переменные userN, если можно просто записывать всех пользователей в list/dict/БД.

Однако если ваш вопрос заключается в том, чтобы автоматически создавать пользователя при signup, то можно сделать это так:


class User:
    def __init__(self, name = 'null', password = 'null', email = 'null'):
        self.name = name
        self.password = password
        self.email = email

    @classmethod
    def signup(cls):
        alphabet = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'

        #Создаём логин
        temp_name = input("Придумайте логин: ")

        #Создаём пароль
        while True:
            flag = 0         #flag == 1 - не идём дальше, flag == 0 - идём дальше
            temp_password = input("Придумайте пароль: ")

            for x in range(0, len(temp_password)):
                if temp_password[x] not in alphabet:
                    print("Используйте только цифры и латинские буквы!")
                    flag = 1
                    break;
            if flag == 1:
                continue;

            if len(temp_password) < 8:
                print("Длина пароля должна составлять не менее 8 символов!")
                flag = 1

            if flag == 1:
                continue;
            else:
                break;

        #Создаём электронную почту
        while True:
            flag = 0
            temp_email = input("Введите электронную почту: ")
            if "@" not in temp_email and "." not in temp_email:
                print("Неверный адрес электронной почты!")
                flag = 1

            if flag == 1:
                continue;
            else:
                break;
        return cls(name=temp_name, password=temp_password, email=temp_email)

Здесь мы превращаем signup в метод класса. Теперь вы можете создавать пользователей так:

user1 = User.signup()
user2 = User.signup()
userN = User.signup()

Так же можно использовать словарь:

users = {}
for i in range(10):
    users[f'user{i+1}'] = User.signup()

print(users)

# Вывод:
# {'user1': <__main__.User object at 0x7f918ec83fd0>, 'user2': <__main__.User object at 0x7f918ec83e20>, 'user3': <__main__.User object at 0x7f918ec83e80>, 'user4': <__main__.User object at 0x7f918ec83eb0>, 'user5': <__main__.User object at 0x7f918ec83f10>, 'user6': <__main__.User object at 0x7f918ec83f40>, 'user7': <__main__.User object at 0x7f918ec83f70>, 'user8': <__main__.User object at 0x7f918ec83d60>, 'user9': <__main__.User object at 0x7f918ec83d30>, 'user10': <__main__.User object at 0x7f918ec83cd0>}
#