Python 如何在函数中调用函数?
因此login2()由于某种原因无法工作。Python 如何在函数中调用函数?,python,function,oop,Python,Function,Oop,因此login2()由于某种原因无法工作。 有人能帮我一下吗?我不确定您的意图,但您可以将其设置为创建其类实例的类方法 import datetime class User: def __init__(self, username, mail, date_of_birth, gender, password): self.username = username self.mail = mail self.date_of_birth =
有人能帮我一下吗?我不确定您的意图,但您可以将其设置为创建其类实例的类方法
import datetime
class User:
def __init__(self, username, mail, date_of_birth, gender, password):
self.username = username
self.mail = mail
self.date_of_birth = datetime.datetime.strptime(date_of_birth, "%d.%m.%Y").date()
self.gender = gender
self.password = password
def get_username(self):
return self.username
def get_mail(self):
return self.mail
def get_date_of_birth(self):
return self.date_of_birth
def get_gender(self):
return self.gender
def get_password(self):
self.password
def get_date(self):
return self.date_of_birth
log = ""
def login2(self):
global log
log = input("input your username: ")
if log == self.username:
pwrd = input("whats your password?")
if pwrd == self.password:
print("Logged in!")
@staticmethod
def login_or_register():
global log
log = input("login or register: ")
if log == "login" or "Login":
login2()
Matt = User("Matterson", "matt@gmail.com", "21.12.1999" ,"male", "Password987")
session1 = User.login_or_register()
但是从你使用它的方式来看
@classmethod
def login_or_register(cls):
log = input("login or register: ")
if log == "login" or "Login":
user = cls()
user.login2()
return user
我认为这应该是一种常规方法
Matt = User("Matterson", "matt@gmail.com", "21.12.1999" ,"male", "Password987")
session1 = User.login_or_register()
不能从类方法调用实例方法。Login2也可以是一个实例方法。然后,不要静态地调用它,而是在Matt实例上调用它,如下所示
def login_or_register(self):
log = input("login or register: ")
if log == "login" or "Login":
self.login2()
@MattDMo-不,
login2
只需要在调用它时存在。。。这发生在文件的底部。@t请注意,很难判断b/c的缩进不一致,但我认为OP是在login\u或
的内部定义login2()
,因此当外部函数运行时,对login2()
的调用在实际定义之前发生。仍然是相同的错误。。。。名称错误:名称“login2”未定义您可以发布一个运行示例吗?我们需要一个类定义和缩进才能正确。由于login\u或\u register
是一种静态方法,因此它对login2
实例方法没有可见性。您希望login\u或
返回User
类的实例吗?@loky您不能从静态方法调用实例方法
import datetime
class User:
def __init__(self, username, mail, date_of_birth, gender, password):
self.username = username
self.mail = mail
self.date_of_birth = datetime.datetime.strptime(date_of_birth, "%d.%m.%Y").date()
self.gender = gender
self.password = password
def get_username(self):
return self.username
def get_mail(self):
return self.mail
def get_date_of_birth(self):
return self.date_of_birth
def get_gender(self):
return self.gender
def get_password(self):
self.password
def get_date(self):
return self.date_of_birth
log = ""
def login2(self):
global log
log = input("input your username: ")
if log == self.username:
pwrd = input("whats your password?")
if pwrd == self.password:
print("Logged in!")
def login_or_register(self):
global log
log = input("login or register: ")
if log == "login" or "Login":
self.login2()
Matt = User("Matterson", "matt@gmail.com", "21.12.1999" ,"male", "Password987")
session1 = Matt.login_or_register()