установить функцию ключа словаря в python

#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