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?

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).


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.