Начал программировать на питоне, разочеровался отсутсвием Шаблонов,
вот написал себе костыль, имеет ли оно право на жизнь? или я плохо знаю питон?
class temlate_new(object):
def __init__( self, cl, params ):
self.cl = cl
self.params = params
pass
def __call__( self, **kw ):
name = self.cl.__name__ + repr(self.params)
bases = self.cl.__bases__
for key, value in self.params.iteritems():
if type( kw[key] ) is not value:
print "Template", name, "is invalid param", key, "need type", repr( value )
return
dicts = {}
dicts.update( self.cl.__dict__ )
dicts.update( kw )
return type( name, bases, dicts )
pass
class template_declaration(object):
def __init__( self, **params ):
self.params = params
pass
def __call__( self, cl ):
return temlate_new( cl, self.params )
pass
pass
def template( **kw ):
return template_declaration(**kw)
pass
@template(T = str)
class Test(object):
def __init__(self):
pass
def foo(self):
print self.T
pass
test_t = Test(T = "1")
test = test_t()
print test
test.foo()
места использования как и в С++, для Монад