我成了这个错误:
文件“xx.py”,第60行,在模块
中Kontrolle.Check()
文件“xx.py”,第55行,检查
如果isSigned == True:
NameError:未定义名称'isSigned'
import hashlib
global security
class Sicherheit:
global isSigned
global passwordFile
def Signup(self):
passwordFile = 'usercreds.tmp'
security = False
isSigned = False #!
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(passwordFile, 'w') as f:
f.write(str(usernameInputHashed.hexdigest()))
f.write('\n')
f.write(str(passwordInputHashed.hexdigest()))
f.close()
self.Login() # Moves onto the login def
isSigned = True
def Login(self):
security = False
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(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")
security = True
else:
print("Anmeldung war nicht erfolgreich!!!\n")
security = False
def Check(self):
if isSigned == True:
self.Login()
else:
self.Signup()
Kontrolle = Sicherheit()
Kontrolle.Check()
while security :
我已定义它(作为全局),它仍然会出现此错误。
我在等待你的帮助
非常感谢提前
答案 0 :(得分:0)
请参阅有关global的python文档 https://docs.python.org/release/2.4/ref/global.html
它说,“全局声明是一个声明,它适用于整个当前的代码块。”因此,您必须在要访问它的代码块中创建变量global。请尝试以下代码:
import hashlib
security = False
isSigned = False
passwordFile = 'usercreds.tmp'
class Sicherheit:
def Signup(self):
global isSigned
print("sign up 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(passwordFile, 'w') as f:
f.write(str(usernameInputHashed.hexdigest()))
f.write('\n')
f.write(str(passwordInputHashed.hexdigest()))
f.close()
self.Login() # Moves onto the login def
isSigned = True
def Login(self):
global security
security = False
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(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")
security = True
else:
print("Anmeldung war nicht erfolgreich!!!\n")
security = False
def Check(self):
global isSigned
if isSigned == True:
self.Login()
else:
self.Signup()
Kontrolle = Sicherheit()
Kontrolle.Check()
实际上你根本不需要全局变量。将这些变量声明为类的成员变量并使用self进行访问。请尝试以下代码:
import hashlib
class Sicherheit:
security = False
isSigned = False
passwordFile = 'usercreds.tmp'
def Signup(self):
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.Login() # Moves onto the login def
self.isSigned = True
def Login(self):
self.security = False
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")
self.security = True
else:
print("Anmeldung war nicht erfolgreich!!!\n")
self.security = False
def Check(self):
if self.isSigned == True:
self.Login()
else:
self.Signup()
Kontrolle = Sicherheit()
Kontrolle.Check()