Почему не работает форма регистрации в python
Объясните почему у меня не работает эта форма так сказать регистрации для новичка. Если вбить в print(admin) , то выведет что логин admin, однако при вводе логина - admin, говорит что такого нету, в чем проблема?
Спасибо.
class Person():
def __init__(self, name):
self.name = name
def __str__(self):
return f"{self.name}"
class Password():
def __init__(self, password):
self.password = password
def __str__(self):
return f"{self.password}"
admin = Person("admin")
adminpass = Password("admin")
login = input("Введите логин: ")
if login == admin:
print("Такой логин есть")
else:
print("Такого логина нету")
password = input("Введите пароль: ")
if password == adminpass:
print("Такой пароль есть")
else:
print("Такого пароля нету")
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Определите в классах специальный метод __eq__, чтобы питон знал, как сравнивать ваши объекты со строками и между собой. На примере Person:
class Person():
def __init__(self, name):
self.name = name
def __str__(self):
return f"{self.name}"
def __eq__(self, other):
if isinstance(other, str):
return self.name == other
if isinstance(other, Person):
return self.name == other.name
return False
Без этого метода питон просто сравнивает ссылки на объекты, получается он сравнивает ссылку на объект Person и на строку "admin", естественно, эти ссылки различаются и поэтому всегда получается False, вне зависимости, какая это строка.