Как передать аргумент в функцию, в качестве атрибута класса

Пытаюсь передать аргумент в функцию, чтобы этот аргумент был вызван классом. Но данный код вызывает ошибку: AttributeError: type object 'Test' has no attribute 'value'. Не очень хорошо знаком с классами, подскажите как можно это реализовать.

class Test:
        account_number = 1
        number_messages = 100
        number_groups = 5

def some_function(value: str):
    Test.value


some_function("account_number")

AttributeError: type object 'Test' has no attribute 'value'


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

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

Для того чтобы получить атрибут класса или же его метод, по переданной строке нужно использовать функцию getattr, в таком случае, ваш код будет выглядеть вот так:

class Test:
    account_number = 1
    number_messages = 100
    number_groups = 5


def some_function(value: str):
    return getattr(Test, value)


print(some_function("account_number"))

Вывод

1
→ Ссылка
Автор решения: alon360

Нашел решение. Необходимо вызвать функцию getattr и передать в неё первым аргументом класс (экземпляр класса), а вторым атрибут.

class Test:
    account_number = 1
    number_messages = 100
    number_groups = 5


def some_function(value: str):
    print(getattr(Test, value))


some_function("account_number")

Output: 1

→ Ссылка