class Magic(type):
def __new__(cls, name, bases, d):
for name, function in d.items():
try:
function._marked
print 'Class: %s' % cls
print 'Method: %s' % name
def wrapper(function):
def toXML(self, *args, **kwargs):
return self._toXML(function(self, *args, **kwargs))
def toList(self, *args, **kwargs):
return self._toList(function(self, *args, **kwargs))
return toXML, toList
d[name+'XML'], d[name+'List'] = wrapper(function)
except AttributeError:
#traceback.print_exc()
pass
return type(name, bases, d)
def mark(f):
f._marked = True
return f
class test(object):
__metaclass__ = Magic
def _toXML(self, value):
return '%s' % value
def _toList(self, value):
return '%s
' % value
class testtest(test):
__metaclass__ = Magic
@mark
def printData(self, data):
return 'child-%s' % data
t = testtest()
print t.printData('data')
print t.printDataXML('data')
print t.printDataList('data')