Allthough xxx is as global defined, expected NameError: name 'xxx' is not defined
Allthough xxx is as global defined, expected NameError: name 'xxx' is not defined
i become this error:
File "xx.py", line 60, in module
Kontrolle.Check()
文件 "xx.py",第 55 行,检查
if 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 :
I had defined it (as global), it still gives this error.
I'm waiting for your helps
Many thanks in advance
请参阅 python 有关全局的文档
https://docs.python.org/release/2.4/ref/global.html
它说,"The global statement is a declaration which holds for the entire current code block." 所以你必须在你要访问它的代码块中使变量成为全局变量。试试下面的代码:
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()
实际上你根本不需要全局变量。将这些变量声明为 class 的成员变量并使用 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()
i become this error:
File "xx.py", line 60, in module
Kontrolle.Check()
文件 "xx.py",第 55 行,检查
if 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 :
I had defined it (as global), it still gives this error.
I'm waiting for your helps
Many thanks in advance
请参阅 python 有关全局的文档 https://docs.python.org/release/2.4/ref/global.html
它说,"The global statement is a declaration which holds for the entire current code block." 所以你必须在你要访问它的代码块中使变量成为全局变量。试试下面的代码:
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()
实际上你根本不需要全局变量。将这些变量声明为 class 的成员变量并使用 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()