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

Reply via email to