why static methods?

Raymond Hettinger vze4rx4y at verizon.net
Fri Feb 21 01:23:42 EST 2003


"Greg Ewing (using news.cis.dfn.de)" <me at privacy.net> wrote in message
news:b347v6$1g1c2c$1 at ID-169208.news.dfncis.de...
> Uwe Schmitt wrote:
> > Can you explain the differences
> > between static- and class-functions, too ?
>
> A class method is like a static method except that it
> is passed the class as its first parameter when called,
> much like an ordinary method is passed the instance
> when called.

Class methods are particularly useful for creating
an alternative constructors.  Here is an example
with a Triangle object that can be constructed
from three sides or from two sides and an
included angle:

>>> class Triangle:
 def __init__(self, s1, s2, s3):
  self.s1 = s1
  self.s2 = s2
  self.s3 = s3
 def perimeter(self):
  return self.s1 + self.s2 + self.s3
 def SAS(cls, s1, angle, s2):
  s3 = (s1**2 + s2**2 - 2 * s1 * s2 * math.cos(angle)) ** 0.5
  return cls(s1, s2, s3)
 SAS = classmethod(SAS)


>>> t = Triangle.SAS(3, 3.14159 / 2, 4)
>>> t.perimeter()
11.999996815691233


Raymond Hettinger






More information about the Python-list mailing list