I already introduced to you the three methods __init__()
,
__repr__()
, and __str__()
. These are predefined methods that every
class has. As they were defined by the Python developers, they have the
eccentric names that start and end with a double underscore. There are
several more of such methods, which I will discuss in later chapters.
You can also define your own methods for a class. Such methods get names
similar to names you give to functions, and tend to follow the same
conventions: starting with a lower case letter, and if there are
different words either have underscores between them or capitalize the
first letter of the second and later words. The prefix is
is used for
methods that provide a True
/False
statement about the object, the
prefix get
is used to get a value from an object, and the prefix set
is used to set a value for an object.
For instance, for a point I can create a method
distance_from_origin()
, which calculates the distance from the point
(0,0) to the given point.
from math import sqrt
class Point:
def __init__( self, x=0.0, y=0.0 ):
self.x = x
self.y = y
def __repr__( self ):
return "({}, {})".format( self.x, self.y )
def distance_from_origin( self ):
return sqrt( self.x*self.x + self.y*self.y )
p = Point( 3.5, 5.0 )
print( p.distance_from_origin() )
You may also create methods that change the object in some way. For
instance, the “translation” of points over a distance is defined as a
specific shift in the horizontal and in the vertical direction. A method
translate()
gets two arguments (beyond the self
reference), which
are the horizontal and vertical shifts.
from math import sqrt
class Point:
def __init__( self, x=0.0, y=0.0 ):
self.x = x
self.y = y
def __repr__( self ):
return "({}, {})".format( self.x, self.y )
def translate( self, shift_x, shift_y ):
self.x += shift_x
self.y += shift_y
p = Point( 3.5, 5.0 )
p.translate( -3, 7 )
print( p )
As you can see, I did not specify a return value (I did not need it),
but the new translate()
method made changes to the point coordinates.
Enhance the Point
class with a method that turns a point into its
polar opposite, i.e., invert the signs of its coordinates, e.g., (3,4)
becomes (-3,-4) and (-1,2) becomes (1,-2).