[Python]Template class
От: IROV..  
Дата: 22.12.10 17:02
Оценка: 1 (1) :)))
Начал программировать на питоне, разочеровался отсутсвием Шаблонов,
вот написал себе костыль, имеет ли оно право на жизнь? или я плохо знаю питон?

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()


места использования как и в С++, для Монад

я не волшебник, я только учусь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.