Раскрытие природы функций, несвязанных и связанных методов
Концепция классов и методов является фундаментальной для парадигм объектно-ориентированного программирования . Понимание нюансов и взаимосвязей между функциями, несвязанными и связанными методами имеет решающее значение для освоения тонкостей системы разрешения методов Python.
Определение сущностей
Преобразования и доступность
Ключевые различия
Эквивалентность и использование
В обоих Python 2 и Python 3, следующие выражения функционально эквивалентны:
f1(C())
C.f1(C())
C().f1()
Привязка функции к экземпляру создает модифицированную версию, в которой первый параметр по своей сути установлен для данного экземпляра. По сути, этот связанный метод ведет себя идентично следующим альтернативным формам:
lambda *args, **kwargs: f1(C(), *args, **kwargs)
functools.partial(f1, C())
От несвязанного к связанному
Экземпляр класса Python 2 не имеет прямого атрибута, соответствующего несвязанным методам, которые вместо этого его можно получить через атрибут __dict__ самого класса. Однако доступ к несвязанному методу экземпляра приводит к его автоматическому преобразованию в связанный метод.
Заключение
Понимание различий между функциями, несвязанными и связанными методами. дает вам возможность эффективно использовать механизм разрешения методов Python. Понимание механизмов связывания и преобразования позволит вам с легкостью справляться со сложностями объектно-ориентированного кодирования.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3