我变成这个错误:
追溯(最近一次通话):
文件“xx”,第51行,在
在CheckSign中的文件“xx”,第46行
AttributeError:'Sicherheit'对象没有属性'isSigned'
你能帮助我吗?
import hashlib
class Sicherheit:
passwordFile = 'usercreds.tmp'
def Signup(self):
self.isSigned = False # !!! self.isSigned
print("Sie müssen sich erst anmelden!\n")
usernameInput = input("Bitte geben Sie Ihren Nutzername ein: \n")
passwordInput = input("Bitte geben Sie Ihr Passwort ein: \n")
usernameInputHashed = hashlib.sha512(usernameInput.encode())
passwordInputHashed = hashlib.sha512(passwordInput.encode())
with open(self.passwordFile, 'w') as f:
f.write(str(usernameInputHashed.hexdigest()))
f.write('\n')
f.write(str(passwordInputHashed.hexdigest()))
f.close()
self.isSigned = True # !!! self.isSigned
print("Anmeldung war erfolgreich!\n")
print("======================================================\n")
self.Login() # Moves onto the login def
def Login(self):
print("Sie müssen sich einloggen!\n")
usernameEntry = input("Bitte geben Sie Ihren Nutzername ein: \n")
passwordEntry = input("Bitte geben Sie Ihr Passwort ein: \n")
usernameEntry = hashlib.sha512(usernameEntry.encode())
passwordEntry = hashlib.sha512(passwordEntry.encode())
usernameEntryHashed = usernameEntry.hexdigest()
passwordEntryHashed = passwordEntry.hexdigest()
with open(self.passwordFile) as r:
info = r.readlines()
usernameInFile = info[0].rstrip()
passwordInFile = info[1].rstrip()
if usernameEntryHashed == usernameInFile and passwordEntryHashed == passwordInFile:
print("Anmeldung war erfolgreich!\n")
else:
print("Anmeldung war nicht erfolgreich!!!\n")
self.Login()
def CheckSign(self):
if self.isSigned == True: # !!! self.isSigned
self.Login()
else:
self.Signup()
Kontrolle = Sicherheit()
Kontrolle.CheckSign()
最佳答案
移动线
self.isSigned = False # !!! self.isSigned
退出
SignUp
方法并放入类变量中,或者为您的类创建__init__
方法并在那里进行初始化你打电话的时候:
Kontrolle = Sicherheit()
设置变量
self.isSigned
的代码永远不会执行(它是SignUp
方法的一部分,并且不会执行),因此在调用时:Kontrolle.CheckSign()
它查找尚未设置的变量,然后引发错误:
AttributeError: 'Sicherheit' object has no attribute 'isSigned'
在类中声明的方式如下:
class Sicherheit:
passwordFile = 'usercreds.tmp'
def __init__(self):
self.isSigned = False
def SignUp():
....
....