我正在尝试进行某种形式的登录,但是除了手动创建大量变量来存储名称和密码之外,我不确定如何存储数据
class Acc:
def __init__(self, name='', passw=''):
self.name = name
self.passw = passw
acc1 = Acc('ab','qw')
acc2 = Acc('kl', 'jm')
acc3 = Acc()
acc4 = Acc()
# ...
# etc
我想做一个函数
创建一个空变量'accx',然后使其成为类Acc()的实例
然后让用户使用输入功能填写其名称和密码。
accx = Acc(input('name: '),input('password: ') )
如果问题很愚蠢,对不起,但是我对编码很陌生
因此,我们将不胜感激
答案 0 :(得分:2)
您可以将Acc
实例存储在列表或字典中。然后,您不必使用很多变量名,并且可以快速引用任何Acc
实例。
我假设您不对任何敏感数据使用此程序,但是作为最佳实践,您应该使用getpass.getpass
函数输入密码。
import getpass
class Acc:
def __init__(self, name, passw):
self.name = name
self.passw = passw
# Hold all Acc instances in one list.
all_accs = []
def new_acc():
name = input('name: ')
passw = getpass.getpass('password: ')
a = Acc(name=name, passw=passw)
all_accs.append(a)
new_acc() # enter name and password
# Now all_accs[0] references the `Acc` created in the line above.
如果要将Acc
实例存储在字典中,则过程将类似。您可以将用户名映射到他们的Acc
实例。
# Hold all Acc instances in one list.
all_accs = {}
def new_acc():
name = input('name: ')
if name in all_accs: # Check for existing name
raise ValueError("name already exists")
passw = getpass.getpass('password: ')
a = Acc(name=name, passw=passw)
all_accs[name] = a
new_acc() # enter "John" and password
# Now all_accs["John"] references the `Acc` created in the line above.
答案 1 :(得分:0)
您可以在实例化后更改属性。 :)
accx = Acc()
accx.name = input('name:')
accx.passw= input('password:')
答案 2 :(得分:0)
如何使用dict
(词典)存储您的信息?
通常,您需要某种类型的数据库,但有时简单的dict
可以在一开始就提供帮助:
import getpass
accounts = {}
while (name := input("Name: ")) != "!exit":
passwd = getpass.getpass() # Safer.
accounts[name] = Acc(name, passwd)
运行它:
Name: Hey
Password:
Name: Hello
Password:
Name: !exit
>>> accounts
{'Hey': <__main__.Acc object at 0x000001BA01DF02E0>, 'Hello': <__main__.Acc object at 0x000001BA01F26850>}
>>> accounts["Hey"].passw
"I'm secret"