Classmethods are evil
Hans Nowak
zephyrfalcon!NO_SPAM! at gmail.com
Sat May 17 09:59:57 EDT 2008
Ivan Illarionov wrote:
> After re-reading "Python is not Java" I finally came to conclusion that
> classmethods in Python are a very Bad Thing.
>
> I can't see any use-case of them that couldn't be re-written more clearly
> with methods of metaclass or plain functions.
I agree with your sentiments, although I'm not sure I would pick metaclasses
over class methods... or over anything at all, for that matter. :-)
> They have the following issues:
> 1. You mix instance-level and class-level functionality in one place
> making your code a mess.
> 2. They are slower than metaclass methods or plain functions.
The way I see it, a class method is really just sugar for a function operating
on the class, living in the class namespace. As such, they are basically
redundant, and as you point out, they can always be replaced by a function
outside the class (and in fact, this was what people did before they came along
in 2.2). Personally, I don't use them... but some people like them. Different
strokes, and all that...
--Hans
More information about the Python-list
mailing list