我尝试使用类和方法来模拟系统访问门户。我希望能够使用input()询问用户的用户名,检查输入是否是user类的对象,如果是,检查用户名的密码是否正确。当我使用实例时,它返回false。我怎样才能修改它来工作
class User():
def __init__(self, username, password):
self.username = username
self.password = password
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(isinstance(input_user, User))
如果您使用的是python3.x(我将假设)
input
返回一个字符串,因此isinstance(input_user, User)
将始终是False
您需要跟踪所有创建的
User
对象,并用输入的名称搜索对象有几种不同的方法可以做到这一点。我假设用户名是唯一的,所以我将在共享集中使用它们:
请注意,这只是一个例子,它既不是防弹的,也不是最好的设计(有人可能会说
users
集是否甚至属于User
类提示:可能不是)。如果一个对象的用户名在初始化之后发生了变化,那么这个集合将不会被更新,并且您可能会得到错误的结果。这个特殊的问题可以通过将self.username
更改为属性来解决,但我认为这超出了本问题的范围;答我不知道这是不是你想做的,但你不能尝试这个 向类添加列表
list_of_usernames = []
然后在__init__()
中将username附加到list_of_usernames
并在末尾所以你的代码看起来像这样
用户输入是字符串。总是。句号。因此,您不能“检查输入是否是User类的对象”——它永远不会是
这里的解决方案是维护
User
实例的集合,并使用输入字符串搜索匹配的用户请注意,这当然只适合作为玩具项目
相关问题 更多 >
编程相关推荐