[英]Is there a way to generate instances of a class
我正在嘗試進行某種登錄系統,但除了手動創建大量變量來存儲名稱和密碼之外,我不知道如何存儲數據
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: ') )
如果問題很愚蠢,我很抱歉,但我對編碼很陌生,所以非常感謝幫助
您可以將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.
您可以在實例化后更改屬性。 :)
accx = Acc()
accx.name = input('name:')
accx.passw= input('password:')
如何使用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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.