"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como vincular métodos não vinculados em Python sem chamá-los?

Como vincular métodos não vinculados em Python sem chamá-los?

Publicado em 2024-11-07
Navegar:515

How to Bind Unbound Methods in Python Without Calling Them?

Vinculando métodos não vinculados: uma abordagem pitônica

Em Python, métodos não vinculados muitas vezes podem representar um desafio ao tentar vinculá-los a uma instância sem ligando para eles inadvertidamente. Esse problema surge, por exemplo, ao trabalhar com wxPython e desejar organizar os dados do botão como uma lista de tuplas em nível de classe.

Conforme mencionado no parágrafo introdutório, confiar em functools.partial pode fornecer uma solução alternativa, mas pode haver uma solução mais elegante e Pythonic. Felizmente, existe uma abordagem eficaz para vincular métodos não vinculados sem invocá-los.

As funções Python possuem a capacidade de atuar como descritores, tornando possível vinculá-los invocando seu método get. Essa abordagem garante que o método não vinculado esteja vinculado à instância específica, permitindo que ele seja transmitido sem invocações inesperadas.

Exemplo de código:

# 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

Conclusão:

Empregar o método get conforme descrito permite vincular perfeitamente métodos não vinculados a instâncias, preservando seu status não vinculado e resolvendo o problema encontrado ao trabalhar com os botões do wxPython.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3