La documentazione per functools.partial dice che è "più o meno equivalente a":functools.partial attuazione che antepone argomenti aggiuntivi
def partial(func, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = keywords.copy()
newkeywords.update(fkeywords)
return func(*(args + fargs), **newkeywords) # line to change
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc
Se avessi voluto implementare una versione che antepone gli argomenti aggiuntivi, sembra come dovrei solo cambiare la linea indicata.
Ci sono altre caratteristiche/trucchi che dovrei essere preoccupato solo copiando questo codice?
Non avevo pensato di creare una sottoclasse del costruito. – Dave
Questo è grande, ma penso che dovrebbe leggere: classe rpartial (parziale): def __call __ (self, * args, ** kwargs): kw = self.keywords.copy() kw.update (kwargs) return self.func (* (args + self.args), ** kw) – ishmael
@ishmael grazie, corretto. – ecatmur