20.6. Objects as Arguments and ParametersΒΆ
You can pass an object as an argument to a function, in the usual way.
Here is a simple function called distance
involving our new Point
objects. The job of this function is to figure out the
distance between two points.
distance
takes two points and returns the distance between them. Note that distance
is not a method of the Point class. You can see this by looking at the indentation pattern. It is not inside the class definition. The other way we
can know that distance
is not a method of Point is that self
is not included as a formal parameter. In addition, we do not invoke distance
using the dot notation.
We could have made distance be a method of the Point class. Then, we would have called the first parameter self, and would have invoked it using the dot notation, as in the following code. Which way to implement it is a matter of coding style. Both work correctly. Most programmers choose whether to make functions be stand-alone or methods of a class based on whether the function semantically seems to be an operation that is performed on instances of the class. In this case, because distance is really a property of a pair of points and is symmetric (the distance from a to b is the same as that from b to a) it makes more sense to have it be a standalone function and not a method. Many heated discussions have occurred between programmers about such style decisions.