Don't be too hard on those who want class methods (Re: Python is wierd!)
Christian Tanzer
tanzer at swing.co.at
Thu Jul 27 02:00:02 EDT 2000
More information about the Python-list mailing list
Thu Jul 27 02:00:02 EDT 2000
- Previous message (by thread): Python is wierd!
- Next message (by thread): polymorphism (was Re: Type checking in python?)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Greg Ewing, <undisclosed address>, wrote: > Usually when people say that class methods > are not needed, they're talking about C++ or Java style static > methods. But Smalltalk-style class methods are a different > species altogether. In Smalltalk, a class is also an instance > (of class Class or some subclass thereof), so > > aClass frobulate: aBlivet > > is dynamically dispatched on the runtime class of aClass, > just like any other message. There is no direct equivalent of > this in Python, because classes are not instances, they're a > different kind of object. The suggestion by Moshe Zadka: > > > > class Function: > > > > > > def __init__(self, func): > > > self.func = func > > > > > > def __call__(self, *args, **kw): > > > return apply(self.func, args, kw) > > > > > > class SomeClass: > > > > > > def class_method(a, b, c): > > > return a+b+c > > > > > > class_method = Function(class_method) > > isn't quite the same thing, because there is no 'self' > in scope in the method which is bound to the receiving > class object (which might be a subclass of SomeClass, > so you can't just assume that it's SomeClass). > > There are no doubt even more convoluted hacks that could > be used to fix that, but in 999,999,999 cases out of > a billion it's probably better to revise your design > so that you don't need class methods in the first place. That's the one of the reasons I'm hoping to see first-class metaclasses in some future Python implementation (and hopefully before Python 3000). In practice however, I need class variables much more often than class methods, and class methods not needing `self' (denoting the class in question) much more often than class methods needing `self'. And even than, default arguments offer an easy workaround. So I think that your 1 ppb is slightly overstated. -- Christian Tanzer tanzer at swing.co.at Glasauergasse 32 Tel: +43 1 876 62 36 A-1130 Vienna, Austria Fax: +43 1 877 66 92
- Previous message (by thread): Python is wierd!
- Next message (by thread): polymorphism (was Re: Type checking in python?)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list