Я хочу найти понятный и эффективный способ изменения значения параметра, установленного для functools.partial
.
Давайте рассмотрим простой пример:
from functools import partial
def fn(a,b,c,d,e):
print(a,b,c,d,e)
fn12 = partial(fn, 1,2)
Позже я хочуиметь что-то вроде:
fn12 [0] = 7
для замены значения в определенном месте без создания нового партиала, потому что там довольно тяжелый код.
Добавление: я спрашиваю об общей возможности изменить партиалзначение.
Наивный пример будет выглядеть так:
def printme( a,b,c,d,e):
print(a,b,c,d,e)
class my_partial:
def __init__(self, fn, *args):
self.__func__ = fn
self. args = list(args)
def __call__(self, *next_args):
call = self. args + list(next_args)
return self. __func__(* (call) )
fn12 = my_partial(printme,1,2)
fn12(3,4,5)
fn12.args[1] = 7
fn12(3,4,5)
Мне это нужно, например, для виджетов, где функция действия определяется как:
rb.config(command = partial(...))
, но тогда я 'Я хотел бы изменить некоторые параметры, приведенные частично.Я мог бы сделать новую часть снова, но это выглядит немного грязно.