def __call__(self, target):
    for attr, value in list(self.source.__dict__.items()):
        if attr.startswith('__'):
            continue
if isinstance(value, (property, types.FunctionType)):
    continue
setattr(target, attr, value)
return target
Python decorator to add class-level variables