Как я могу увеличивать значение +1 каждый раз, когда использую метод login ()? Каждый раз, когда я использую этот метод, он показывает мне один и тот же результат - «1». - PullRequest
0 голосов
/ 06 августа 2020
class User:
    def __init__(self,first_name,last_name,age,gender,login_attempts,reset_login_attempts=0):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age
        self.gender = gender
        self.login_attempts = 0
        self.reset_login_attempts = reset_login_attempts
    def describe_user(self):
        data = {}
        data["first name"] = self.first_name
        data["last name"] = self.last_name
        data["age"] = self.age
        data["gender"] = self.gender
        for keys,values in data.items():
            print(f"{keys}  :  {values}")

    def greet_user(self):
        print(f"\nHello {self.first_name.title()} {self.last_name.title()}")

    def login(self):
        
        self.login_attempts += 1
        print(f"{self.login_attempts} times logged in")
        


user1 = User('vishesh',"Bajpayee",20,"Male",0,)
user2 = User('abcd','efgf',20,'Female',0)

user1.login()

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Проблема здесь в том, что вы помещаете функцию входа в систему внутри класса, что делает ее локальной функцией, которая является эксклюзивной для самого объекта, которым являются user1 и user2. Вы можете решить проблему, поместив login_attempts за пределы класса, что сделает его глобальной функцией.

0 голосов
/ 06 августа 2020

Сделайте login_attempts переменной класса, чтобы вы могли отслеживать количество попыток входа в систему независимо от учетных данных

class User:

    login_attempts = 0

    def __init__(self,first_name,last_name,age,gender,login_attempts,reset_login_attempts=0):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age
        self.gender = gender
        self.reset_login_attempts = reset_login_attempts

    def describe_user(self):
        data = {}
        data["first name"] = self.first_name
        data["last name"] = self.last_name
        data["age"] = self.age
        data["gender"] = self.gender
        for keys,values in data.items():
            print(f"{keys}  :  {values}")

    def greet_user(self):
        print(f"\nHello {self.first_name.title()} {self.last_name.title()}")

    def login(self):
        User.login_attempts += 1
        print(f"{User.login_attempts} times logged in")
        


user1 = User('vishesh',"Bajpayee",20,"Male",0,)
user2 = User('abcd','efgf',20,'Female',0)

user1.login()
user2.login()

ИЛИ

Если вы хотите отслеживать количество попытки, сделанные конкретным пользователем, ваш код работает нормально и снова вызовите метод входа в систему, используя тот же объект, чтобы увидеть приращение в переменной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...