Dlaczego tak
W Pythonie obiekt tworzy się, wywołując klasę jak funkcję: Punkt(1, 2) tworzy nowy obiekt i automatycznie wywołuje __init__, przekazując go jako parametr self, a 1 i 2 jako x i y. Słowo new nie istnieje w Pythonie, więc pierwsza odpowiedź to nawyk z Javy lub C# kończący się błędem składni. Jawne podanie self przekazałoby o jeden argument za dużo, a samo __init__ nie tworzy obiektu i zwraca None.