встроенный метод 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
а потом делай необходимое.