繁体   English   中英

如何在函数内部调用函数?

[英]How do I call a function inside a function?

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()

所以由于某种原因 login2() 不会工作。 有人可以帮我吗?

我不确定您的意图,但您可以将其设为创建其类实例的类方法。

@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()

我认为它应该只是一种常规方法

def login_or_register(self):
    log = input("login or register: ")
    if log == "login" or "Login":
        self.login2()

不能从类方法调用实例方法。 Login2 也可以是一个实例方法。 然后不是静态调用它,而是在 Matt 实例上调用它,如下所示。

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM