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