Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- __author__ = 'f1ashhimself@gmail.com'
- import functools
- def overload(*args):
- def wrapper(fn):
- global __overload_map__
- if '__overload_map__' not in globals():
- __overload_map__ = {}
- __overload_map__[(fn.__name__, args)] = fn
- @functools.wraps(fn)
- def real_wrapper(self, *args, **kwargs):
- new_fn = __overload_map__[(fn.__name__,
- tuple([type(arg) for arg in args]))]
- return new_fn(self, *args, **kwargs)
- return real_wrapper
- return wrapper
- class Foo(object):
- @overload(str)
- def bar(self, f):
- print(f)
- @overload(int)
- def bar(self, f):
- print('Foo bar -> %s' % f)
- foo = Foo()
- foo.bar('Something')
- foo.bar(3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement