Questo funziona e felicemente stamperà 81:Perché `classe X: mypow = pow` funziona? Che dire di "sé"?
class X:
mypow = pow
print(X().mypow(3, 4))
Ma perché? Non è il metodo dato l'argomento extra di "sé" e dovrebbe essere completamente confuso?
Per confronto, ho anche provato con la mia Pow
funzione:
def Pow(x, y, z=None):
return x ** y
class Y:
myPow = Pow
print(Pow(3, 4))
print(Y().myPow(3, 4))
la funzione Direct stampe chiamate 81 e si blocca il metodo di chiamata come previsto, come fa ottenere tale argomento esempio in più:
Python 3: TypeError: unsupported operand type(s) for ** or pow(): 'Y' and 'int'
Python 2: TypeError: unsupported operand type(s) for ** or pow(): 'instance' and 'int'
Perché/come funziona Python possedere pow
lavoro qui? The documentation non ha aiutato e non ho trovato la fonte.
Lo stesso modo in cui viene passato al mio 'Pow'? @PadraicCunningham –
Questo perché l'attributo '__self__' delle funzioni builtin non è scrivibile, quindi è sempre' None' per 'pow'. –
@vaultah Prova in Python 2. –