Как передать аргумент в функцию, в качестве атрибута класса
Пытаюсь передать аргумент в функцию, чтобы этот аргумент был вызван классом. Но данный код вызывает ошибку: 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