10.1 Polymorphism vs. Function Passing
Operator Overloading
Suppose we define a Dog class:
class Dog:
def __init__(self, name, size):
self.name = name
self.size = size
def __gt__(self, other):
return self.size > other.size
The Python code below can be used to find the maximum Dog in a list of Dogs.
def get_the_max(x):
max_value = x[0]
for item in x:
if item > max_value:
max_value = item
return max_value
max_dog = get_the_max(doglist)
The get_the_max function in Python is general and can work on any type. It achieves this generality by harnessing "operator overloading".
More generally, this ability to handle any type is sometimes called "polymorphism", which I'll define via wikipedia as “the ability in programming to present the same programming interface for differing underlying forms” [wiki]
In this case, the > operator allows to compare anything (i.e. "any underlying form") in Python. In turn the definition of > is given by __gt__
.
Previous10. Inheritance II: Subtype Polymorphism, Comparators, Comparables, Generic FunctionsNext10.2 Comparables and Comparators
Last updated