Привязка несвязанных методов: Pythonic подход
В Python несвязанные методы часто могут создавать проблемы при попытке привязать их к экземпляру без случайно позвонил им. Эта проблема возникает, например, при работе с wxPython и желании организовать данные кнопок в виде списка кортежей на уровне класса.
Как упоминалось во вводном абзаце, использование functools.partial может обеспечить обходной путь, но может быть более элегантное и Pythonic решение. К счастью, существует эффективный подход к связыванию несвязанных методов без их вызова.
Функции Python обладают способностью действовать как дескрипторы, что позволяет связывать их, вызывая их метод get. Такой подход гарантирует, что несвязанный метод привязан к конкретному экземпляру, что позволяет передавать его без каких-либо неожиданных вызовов.
Пример кода:
# Declare an unbound method
def some_method(self):
# Method implementation here
# Bind the unbound method to an instance
instance = MyClass()
bound_method = some_method.__get__(instance, MyClass)
# Continue passing around the bound method without calling it
Вывод:
Использование описанного метода get позволяет легко привязывать несвязанные методы к экземплярам, сохраняя их несвязанный статус и решение проблемы, возникающей при работе с кнопками wxPython.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3