TypeError:get_first_name()缺少1个必需的位置参数:';自我';用Python

TypeError:get_first_name()缺少1个必需的位置参数:';自我';用Python,python,Python,所以我有麻烦显示管理员的名字,出于某种原因,它一直说它不存在,请给我一些反馈什么是错误的,非常感谢 下面您可以找到admin类,我们在其中设置了所有参数,如名字和姓氏等 在那之后,我们得到了bank系统类,我在其中导入了admin类并实例化了它,但仍然没有任何结果,即使添加了缺少的位置参数,它仍然表示fname不存在 class Admin: def __init__(self, fname, lname, address, user_name, password, full_right

所以我有麻烦显示管理员的名字,出于某种原因,它一直说它不存在,请给我一些反馈什么是错误的,非常感谢 下面您可以找到admin类,我们在其中设置了所有参数,如名字和姓氏等 在那之后,我们得到了bank系统类,我在其中导入了admin类并实例化了它,但仍然没有任何结果,即使添加了缺少的位置参数,它仍然表示fname不存在

class Admin:
    def __init__(self, fname, lname, address, user_name, password, full_rights):
        self.fname = fname
        self.lname = lname
        self.address = address
        self.user_name = user_name 
        self.password = password
        self.full_admin_rights = full_rights

    def update_first_name(self, fname):
        self.fname = fname

    def update_last_name(self, lname):
        self.lname = lname

    def get_first_name(self):
        return self.fname

    def get_last_name(self):
        return self.lname

至少有两个问题:

  • BankSystem.admin\u login()
    返回由消息和管理对象组成的对,但
    run\u main\u options()
    将该对分配给单个变量
    admin\u obj
    。您应该将其更改为类似于
    msg,admin\u obj=…
    的内容,以使其行为符合您的预期

  • BankSystem.admin\u menu()
    覆盖在第一行传递的对象。这条线应该拆下


  • BankSystem.admin\u菜单中
    admin\u obj=admin
    -这是
    admin
    类的别名,而不是
    admin
    类的实例。有很多代码可以显示您的问题。为了让人们更容易地帮助您,请尝试将代码数量减少到演示问题所需的最低程度。@Krazzy不客气,如果您的问题已解决,请不要忘记标记为已回答;-)
    from customer_account import CustomerAccount
    from admin import Admin
    
    accounts_list = []
    admins_list = []
    
    class BankSystem(object):
        def __init__(self):
            self.accounts_list = []
            self.admins_list = []
            self.load_bank_data()
    
        def load_bank_data(self):
    
            # create admins
            admin_1 = Admin("Julian", "Padget", ["12", "London Road", "Birmingham", "B95 7TT"], "id1188", "1441", True)
            self.admins_list.append(admin_1)
    
            admin_2 = Admin("Cathy",  "Newman", ["47", "Mars Street", "Newcastle", "NE12 6TZ"], "id3313", "2442", False)
            self.admins_list.append(admin_2)
    
    
        def search_admins_by_name(self, admin_username):
            found_admin =None
            for a in self.admins_list:
                username =a.get_username()
                if username ==admin_username:
                    found_admin =a
                    break
            if found_admin ==None:
                print("\n The Admin %s does not exist! Try again...\n"%admin_username)
    
            return found_admin
    
    
        def main_menu(self):
            #print the options you have
            print()
            print()
            print ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            print ("Welcome to the Python Bank System")
            print ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            print ("1) Admin login")
            print ("2) Quit Python Bank System")
            print (" ")
            option = int(input ("Choose your option: "))
            return option
    
    
        def run_main_options(self):
            loop = 1         
            while loop == 1:
                choice = self.main_menu()
                if choice == 1:
                    username = input ("\n Please input admin username: ")
                    password = input ("\n Please input admin password: ")
                    admin_obj = self.admin_login(username, password)
    
                    if admin_obj != None:
                        self.run_admin_options(admin_obj)
                elif choice == 2:
                    loop = 0
            print ("\n Thank-You for stopping by the bank!")
    
        def admin_login(self, username, password):
            found_admin=self.search_admins_by_name(username)
            msg="\n Login failed"
            if found_admin!=None:
                    if found_admin.get_password()==password:
                        print("Login Sucssesful")
            return msg,found_admin
    
        def admin_menu(self, admin_obj):
            #print the options you have
             admin_obj = Admin
             print (" ")
             print ("Welcome Admin %s %s : Avilable options are:" %(admin_obj.get_first_name(), admin_obj.get_last_name()))
             print ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
             print ("1) Transfer money")
             print ("2) Customer account operations & profile settings")
             print ("3) Delete customer")
             print ("4) Print all customers detail")
             print ("5) Sign out")
             print (" ")
             option = int(input ("Choose your option: "))
             return option
    
    app = BankSystem()
    app.run_main_options()