#python #dictionary #oop
#python #словарь #ооп
Вопрос:
Мне было интересно, как создать функцию для установки ключа словаря. Рассмотрим следующий класс:
class Dog:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
Теперь давайте создадим экземпляр объекта:
a_dog = Dog("Berty", "Hollows")
Теперь я хочу создать функцию, которая возвращает либо имя, либо фамилию, в зависимости от того, какой параметр я передаю в нее. Моя идея была чем-то вроде:
def return_dogs_name(dog, get_dict_key(x)):
return dog.get_dict_key(x)
с помощью
def get_dict_key(x):
return x
однако это не работает.
Мой желаемый результат будет выглядеть так
return_dogs_name(a_dog, get_dict_key("first_name"))
>>> Berty
Как бы выглядела такая функция?
Ответ №1:
Вы можете использовать getattr:
class Dog:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def return_dogs_name(dog, attrName):
return getattr(dog, attrName)
a_dog = Dog("Berty", "Hollows")
print(return_dogs_name(a_dog, 'first_name'))
Выход:
Berty
Ответ №2:
Вы можете создать словарь внутри своей функции
class Dog:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
a_dog = Dog("Berty", "Hollows")
def return_dogs_name(dog,which_name):
return {'first': dog.first_name,'last': dog.last_name}.get(which_name,'unknown')
print(return_dogs_name(a_dog,'last'))
Вывод :
Hollows