python中的NameError,但所有内容都已定义(拼写正确)
我刚刚开始使用类,我决定创建一个快速登录程序。 该程序应该设置一个用户,让他们登录,但每当我运行该程序时,我就会收到一个名称错误。我检查了拼写,一切似乎都是正确的。任何帮助都将不胜感激python中的NameError,但所有内容都已定义(拼写正确),python,function,class,Python,Function,Class,我刚刚开始使用类,我决定创建一个快速登录程序。 该程序应该设置一个用户,让他们登录,但每当我运行该程序时,我就会收到一个名称错误。我检查了拼写,一切似乎都是正确的。任何帮助都将不胜感激 class User(object): def __init__(self, name1, name2 , age , username, passw): self.name1 = name1 self.name2 = name2 self.age =
class User(object):
def __init__(self, name1, name2 , age , username, passw):
self.name1 = name1
self.name2 = name2
self.age = age
self.username = username
self.passw = passw
def user_setup(self):
try:
name1 = str(input("Please enter your first name : "))
try:
name2 = str(input("Please enter your last name : "))
try:
age = int(input("Please enter your age in years"))
except ValueError:
print("Thats not allowed")
except ValueError:
print("Thats not allowed")
except ValueError:
print("Thats not allowed")
self.username = self.name1[0:3] + str(self.age)
return self.username
def login(self):
for i in range(4):
loginUsername = input("Please enter your username : ")
if loginUsername == self.username:
loginPassword = input("Please enter your password : ")
if loginPassword == self.passw:
print("You have loggged in as " + self.username)
else:
print("invalid")
else:
print("invalid")
print("You have entered your username or password incorrectly too many times")
quit()
def main():
menu = int(input("1.new user\n2.login\n-"))
if menu == 1:
user_setup()
login()
elif menu == 2:
login()
print("test")
main()
运行程序时出现的错误:
1.new user
2.login
-1
Traceback (most recent call last):
File "C:\Users\colin\Desktop\Python programs\Password generator.py", line 58, in <module>
main()
File "C:\Users\colin\Desktop\Python programs\Password generator.py", line 50, in main
user_setup()
NameError: name 'user_setup' is not defined
1.新用户
2.登录
-1
回溯(最近一次呼叫最后一次):
文件“C:\Users\colin\Desktop\Python programs\Password generator.py”,第58行,在
main()
文件“C:\Users\colin\Desktop\Python programs\Password generator.py”,第50行,在main中
用户设置()
NameError:未定义名称“user\u setup”
在main()
中将user\u setup()
更改为user.user\u setup()
,因为user\u setup()
是user
类的一个方法,python不会将其视为正常函数
您还需要将login()
更改为User.login()
但是,类是以另一种方式使用的,例如,通过将user\u setup()
和\uuuu init\uuuu()
组合起来,然后通过以下方式创建用户,可以更频繁地创建新用户:
user1 = User(...)
user\u setup
是类上的一个方法,因此您需要先实例化该方法,然后才能使用它:
user = User(name1='foo', name2='bar', age=21, username='foobar', password='secret')
user.user_setup()
user\u setup()
是user
的一种方法。您需要创建一个User
实例,然后像这样调用该方法
user = User(name1, name2, age, username, passw)
user.user_setup()
如果您想在不先实例化的情况下调用它,请将user\u setup
a设置为
User.user_setup()
您需要创建一个用户实例,然后调用适当的方法。另外,在
\uuuu init\uuuuuu
中,您需要为参数名等指定默认值。在使用用户设置()之前,您需要创建一个用户()
对象。请阅读它将不起作用,因为它是一个未绑定的方法,必须使用用户instanceinded调用它。我稍微更改了我的答案,但Fhtchitchell的答案更好