In <[EMAIL PROTECTED]>, John Salerno wrote: > I've been reading up on them, but I don't quite understand how they > differ in practice. I know how each is implemented, and from C# I > already know what a static method is. But I won't assume that it's the > same in Python. And on top of that, both the class and static methods of > Python seem to do what a C# static method does, so I don't see the > difference yet.
The difference is that the classmethod gets the class as first argument much like self in instance methods. class A: def __init__(self, data): print 'A' self.data = data @classmethod def from_file(cls, filename): # read data return cls(data) class B(A): def __init__(self, data): print 'B' self.data = data If you call `B.from_file('spam.xyz')` now, the `from_file()` method inherited from class `A` is called but with `B` as the first argument so it returns an instance of `B`. A staticmethod is just a function attached to a class without any "magic". Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list