Perguntas com a marcação «magic-methods»


14
Exemplo prático do método especial Python __call__
Eu sei que o __call__método em uma classe é acionado quando a instância de uma classe é chamada. No entanto, não tenho idéia de quando posso usar esse método especial, porque é possível simplesmente criar um novo método e executar a mesma operação feita no __call__método. Em vez de chamar …

7
Por que Python usa 'métodos mágicos'?
Tenho brincado com Python recentemente e uma coisa que estou achando um pouco estranho é o uso extensivo de 'métodos mágicos', por exemplo, para tornar seu comprimento disponível, um objeto implementa um método def __len__(self), e então é chamado quando você escrevelen(obj) . Eu estava me perguntando por que os …

3
Como funciona o python numpy.where ()?
Estou brincando numpye vasculhando documentação e descobri alguma mágica. A saber, estou falando sobre numpy.where(): >>> x = np.arange(9.).reshape(3, 3) >>> np.where( x > 5 ) (array([2, 2, 2]), array([0, 1, 2])) Como eles conseguem internamente que você seja capaz de passar algo semelhante x > 5a um método? Acho …

4
O que é o atributo __dict __.__ dict__ de uma classe Python?
>>> class A(object): pass ... >>> A.__dict__ <dictproxy object at 0x173ef30> >>> A.__dict__.__dict__ Traceback (most recent call last): File "<string>", line 1, in <fragment> AttributeError: 'dictproxy' object has no attribute '__dict__' >>> A.__dict__.copy() {'__dict__': <attribute '__dict__' of 'A' objects> ... } >>> A.__dict__['__dict__'] <attribute '__dict__' of 'A' objects> # What …


8
PHP __get e __set métodos mágicos
A menos que eu esteja completamente enganado, os métodos __gete __setdevem permitir a sobrecarga do → gete set. Por exemplo, as seguintes instruções devem invocar o __getmétodo: echo $foo->bar; $var = $foo->bar; E o seguinte deve usar o __setmétodo: $foo->bar = 'test'; Isso não estava funcionando em meu código e …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.