On Sun, 01 Dec 2013 19:18:58 +0000, G. wrote: > Hi, I can't figure out how I can extend the 'function' built-in class. I > tried: > class test(function): > def test(self): > print("test") > but I get an error. Is it possible ?
You cannot subclass the function type directly, but you can extend functions. Firstly, rather than subclassing, you can use delegation and composition. Google for more info on delegation and composition as an alternative to subclassing: https://duckduckgo.com/html/?q=delegation%20as%20alternative%20to% 20subclassing You can also add attributes to functions: def spam(): pass spam.eggs = 23 Want to add a method to a function? You can do that too: from types import MethodType spam.method = MethodType( lambda self, n: "%s got %d as arg" % (self.__name__, n), spam) It's even simpler if it doesn't need to be a method: spam.function = lambda n: "spam got %d as arg" % n) Want more complex behaviour? Write a callable class: class MyCallable(object): def __call__(self, arg): pass func = MyCallable() There are plenty of ways to extend functions. Subclassing isn't one of them. -- Steven -- https://mail.python.org/mailman/listinfo/python-list