Składnia definicji klas w Pythonie

90

Czy jest różnica między

class A:
    ...

i

class A():
    ...

Właśnie zdałem sobie sprawę, że kilka moich zajęć jest zdefiniowanych jako pierwsze i działają dobrze. Czy pusty nawias ma znaczenie?

Falmarri
źródło

Odpowiedzi:

22

Ta ostatnia jest błędem składniowym w starszych wersjach Pythona. Jednak w Pythonie 2.x powinieneś czerpać z, objectgdy tylko jest to możliwe, ponieważ kilka przydatnych funkcji jest dostępnych tylko w klasach nowego stylu (wyprowadzenie z objectjest opcjonalne w Pythonie 3.x, ponieważ klasy w nowym stylu są tam domyślne).

Ignacio Vazquez-Abrams
źródło
7
Nie jest już prawdą w Pythonie 3; wszystko, co wywodzi się z objectnonsensów, jest załatwiane automatycznie.
temporary_user_name
4
Czy class A()kiedykolwiek wystąpił błąd składni? Dokumentacja Pythona 1.4 mówi, że jest w porządku i są to najstarsze dokumenty wciąż dostępne na python.org.
user2357112 obsługuje Monikę
86

Chociaż użycie pustych nawiasów w definicji klasy może nie być niepoprawne pod względem składniowym, nawiasy po definicji klasy służą do wskazania dziedziczenia, np .:

class A(baseClass):
    ...

W Pythonie preferowaną składnią deklaracji klasy bez klas bazowych jest po prostu:

class A:
    ...

Nie używaj nawiasów, chyba że tworzysz podklasy innych klas.

Dokumentacja w tej sprawie powinna dać ci lepsze zrozumienie, jak deklarować i używać klas w Pythonie.

Rafe Kettler
źródło