Получение места в памяти от getattr () - PullRequest
0 голосов
/ 13 июня 2018

из моего исследования я понимаю, что использование getattr() позволяет получить метод для определенного объекта, такой как:

getattr(obj, method)

эквивалентен

obj.method()

ОднакоЯ попытался использовать его в своем коде, и оператор возвращает ячейку памяти:

<bound method _Class.method of <Class instance at 0x7f412df0c320>>

Я не понимаю, что я делаю неправильно.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 13 июня 2018

Методы - это просто атрибуты, а getattr() возвращает атрибуты.Таким образом,

getattr(obj, 'method')

- это то же самое, что и

obj.method

, поэтому без основного вызова () вызов объекта объекта не производится.Просто добавьте выражение вызова, чтобы вызвать результат метода getattr():

getattr(obj, 'method')()

__getattr__ - это метод подключения, позволяющий классу настраивать обработку отсутствующих атрибутов.Обычно вам не нужно звонить напрямую.

...