Как написать данный код более эффективно

Как написать данный код покороче и более эффективно и возможно ли это?

def get_price(user, building):
    if type(user) == SimpleLazyObject:
        if building == 'farm':
            return models.Price.objects.get(user=user).farm
        elif building == 'workshop':
            return models.Price.objects.get(user=user).workshop
        elif building == 'pharmacy':
            return models.Price.objects.get(user=user).pharmacy
        elif building == 'bakery':
            return models.Price.objects.get(user=user).bakery

В данном случае я про код который if building == 'farm':... и после него


Ответы (1 шт):

Автор решения: Xander

Попробуйте так:

def get_price(user, building):
    if type(user) == SimpleLazyObject:
        return getattr(models.Price.objects.get(user=user), building)

Справка по getattr:

https://pythonz.net/references/named/getattr/

→ Ссылка