Я думаю, проблема в том, что create
является функцией-членом Stitch (несмотря на ваш плохой отступ: create
обращается к переменной-члену params
из Stitch
), поэтому вам понадобится объект типа Stitch
для использования с create
, который затем также будет передан в качестве первого аргумента в create
. Это будет работать так:
import functools
class Creator:
def __init__(self, params):
self.params = params
class Stitch:
__tablename__ = 'stitch'
def __init__(self, params, name):
self.name = name
self.params = params
def create(self, clz, *args, **kwargs):
return clz(self.params, *args, **kwargs)
creator = Creator('params')
stitch1 = Stitch('pp', 'my_name')
print("stitch1= ", stitch1)
for clazz in [Stitch]:
setattr(Creator, 'create_%s' % clazz.__tablename__, functools.partial(stitch1.create, clazz))
stitch = creator.create_stitch('myname')
print("stitch= ", stitch)