Используйте строку для получения значения атрибута python - PullRequest
0 голосов
/ 19 июня 2020

У меня есть это:

class A:
    def __getattr__(self, name):
        if name == 'a'
             return 'this'
        else:
             return 'that'

Я хотел бы создать другой класс, который будет использовать «класс A» и использовать строку в качестве будущих атрибутов «A», например:

class B:
    def use_a(self, attributes='a'):
         a = A().attributes
         return a

Я бы хотел, чтобы метод use_a(class B) возвращал 'this', если я установил атрибуты на 'a', но он не работает и возвращает 'that'. Но я пытаюсь сделать gettattr, это тоже не работает. Как я могу это сделать ? Большое спасибо

1 Ответ

1 голос
/ 19 июня 2020

__getattr__ вызывается, если A().a не существует. Вам все равно нужно использовать getattr, если сам атрибут является переменной.

def use_a(self, attribute='a'):
    a = getattr(A(), attribute)
    return a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...