Menu

Overloaded overloading

Hacker News·3 months ago
#x0W368ew
#powerfulpython#self#point#distance#method
Reading 0:00
15s threshold

"If Python doesn't support overloading, how does '+' work which can be either addition or concatenation, correct?"

My collegue Peter asked me this once. Let me explain this question, then answer it. And it starts with the word "overloading", which has two different meanings in Python.

When you write a class in Python, you can have only one version of each method. For example, this doesn't work:

import math

class Point :

def __init__ ( self , x , y ):

self . x , self . y = x , y

def distance ( self , other_point ):

# Distance from this point to another point

return math . sqrt (

( self . x - other_point . x ) ** 2 +

( self . y - other_point . y ) ** 2 )

def distance ( self , x , y ):

# Distance from this point to other x-y coords

return math . sqrt ( ( self . x - x ) ** 2 + ( self . y - y ) ** 2 )

See the two distance() methods? See how it's defined twice?

In Python, only the second version is kept. The first one is silently overwritten and erased.…

Continue reading — create a free account

Join HashtagPLUS to read full articles, follow hashtags, vote, and join the conversation.