получение входных данных от пользователя, чтобы решить, какой объект будет использоваться в классе python

#python #class

#python #класс

Вопрос:

я новичок здесь, и я пытаюсь изучить python. я хочу создать простую программу atm, но я также хочу попробовать что-то, чего я еще не видел. я хочу получить входные данные от пользователя и выбрать один из объектов класса в соответствии с этим выбором, вот часть моего кода

 class bankaccount():

    def __init__(self,name,money):

        self.name=name
        self.money=money

    def show(self):

        print(self.name,self.money)


johnaccount=bankaccount("john",500)
mikeaccount=bankaccount("mike",1000)
sarahaccount=bankaccount("sarah",1500)

selection= input("please write the name: ")
  

например, я напишу john, и программа должна запустить johnaccount.показать, возможно ли это? не могли бы вы помочь по этому вопросу.

Комментарии:

1. Поместите объекты в a dict , а затем вы можете посмотреть его напрямую.

2. Что не так с вашим кодом? Попробуйте johnaccount.show() .

Ответ №1:

Ниже

 class bankaccount():

    def __init__(self,name,money):
        self.name=name
        self.money=money

    def show(self):
        print(self.name,self.money)

# build the accounts 'DB' (which is just a dict)
# read more here: https://cmdlinetips.com/2018/01/5-examples-using-dict-comprehension/
accounts = {name: bankaccount(name,balance) for name,balance in [("john",500),("mike",1000)]}

user = input("please write the name: ")

account = accounts.get(user)
if account:
  account.show()
else:
  print(f'no account for {user}')
  

Ответ №2:

Для этого есть «хакерский» способ (см. Ниже). Обычно вы предпочитаете иметь словарь или список, содержащий все учетные записи, а затем получить учетную запись оттуда.

Например:

 accounts = {
  'john': bankaccount("john",500),
  'mike': bankaccount("mike",1000)
}

selection = input("please write the name: ")
if selection in accounts:
  print(f"Balance: {accounts[selection].show()}") 
else:
  print("Account not found")
  

«Хакерский» способ заключается в использовании встроенной locals функции Python:

 johnaccount=bankaccount("john",500)
mikeaccount=bankaccount("mike",1000)
sarahaccount=bankaccount("sarah",1500)

selection = input("please write the name: ")
account_name =  f"{selection}account"

if account_name in locals():
  print(f"Balance: {locals()[account_name].show()}") 
else:
  print("Account not found")
  

f"Balance: {accounts[selection].show()}" Синтаксис, который я использую, называется f-strings или форматированными строковыми литералами.

PS. обычной практикой является использование camelCase для имен классов, например BankAccount , и использование строчных и подчеркиваний для имен переменных, например john_account .

Комментарии:

1. большое спасибо за вашу помощь, я изучу эти методы, а также обращу внимание на свой синтаксис 🙂