Если вы используете Python 3.x (который я собираюсь предположить), input
возвращает строку, поэтому isinstance(input_user, User)
всегда будет False
.
Вам нужно будет отслеживать все User
созданные объекты и искать объект с введенным именем.
Есть несколько разных способов сделать это. Я предполагаю, что имена пользователей уникальны, поэтому я буду использовать их в общем наборе:
class User:
users = set()
def __init__(self, username, password):
self.username = username
self.password = password
self.users.add(username)
def change_pw(self, new_password):
self.password = new_password
jshannon = User("jshannon", "AbC!23")
print(jshannon.username)
print(jshannon.password)
jshannon.change_pw("(i*u&y1")
print(jshannon.password)
input_user = input("What is your username? ")
print(input_user in User.users)
# will output True if input_user is jshannon, otherwise False
Обратите внимание, что это всего лишь пример, и он не пуленепробиваемый и не лучший дизайн (можно утверждать, что набор users
даже принадлежит классу User
Подсказка: вероятно, не ). Если имя пользователя объекта изменится после инициализации, набор не будет обновлен, и вы можете получить неправильные результаты. Эту конкретную проблему можно решить, изменив self.username
на свойство, но я полагаю, что это выходит за рамки этих вопросов и ответов.