2 Create subclasses that call out to their "superclass" for all methods
3 but return the "subclass's" type
7 return (lambda self,*args: c(getattr(self.value, func)(*map(self.value.__class__, args))))
9 class SmartSubclass(object):
10 def __init__(self, superclass, exclude=[]):
11 self.superclass = superclass
12 self.exclude = exclude
13 def __call__(self, name, bases, dict):
14 c = type(name, bases, dict)
15 for func in dir(self.superclass):
16 if func not in dir(c) and \
17 callable(getattr(self.superclass, func)) and \
18 func not in self.exclude:
19 setattr(c, func, wrapper(c, func))
22 __all__ = ['SmartSubclass']