#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. большое спасибо за вашу помощь, я изучу эти методы, а также обращу внимание на свой синтаксис 🙂