встроенный метод python getattr выполняет аргументы по умолчанию

Я не знаю, является ли это ожидаемым поведениемgetattr встроенный метод.getattr выполняет аргумент по умолчанию (3-й), даже если фактический аргумент (2-й) удовлетворяет условию. Пример:

def func():
    print('In Function')

class A:
    def __init__(self):
        self.param = 12

a = A()

Когда я бегуgetattr(a, 'param', func()) это дает такой результат:

In Function
12

Обратите вниманиеIn Function который я не хочу.

Но он прекрасно работает, когда я выполняюgetattr(a, 'param1', func()) т.е. вывод

In Function

Но я хочу только результат как12 если выполнено условие. Пожалуйста, дайте мне знать, почемуgetattr имеет такое поведение и можем ли мы помешать им сделать это (то есть не выполнять 3-й аргумент, если имеет 2-й аргумент), будет оценено, если вы поделитесь альтернативным способом сделать это Pythonic. Первое, что приходит в голову, это проверить,param1 существуют с использованиемhasattr а потом делай необходимое.

Ответы на вопрос(1)

Ваш ответ на вопрос