Синтаксис определения класса Python

90

Есть ли разница между

class A:
    ...

а также

class A():
    ...

Я только что понял, что пара моих классов определены как первые и работают нормально. Имеет ли значение пустая скобка?

Фалмарри
источник

Ответы:

22

Последнее является синтаксической ошибкой в ​​старых версиях Python. В Python 2.x вы должны по возможности производиться от него object, поскольку несколько полезных функций доступны только с классами нового стиля (наследование от не objectявляется обязательным в Python 3.x, поскольку классы нового стиля там используются по умолчанию).

Игнасио Васкес-Абрамс
источник
7
Больше не так в Python 3; все, что происходит от objectерунды, устраняется автоматически.
temporary_user_name
4
Была ли class A()когда-нибудь синтаксическая ошибка? Документы Python 1.4 говорят, что это нормально, и это самые старые документы, все еще доступные на python.org.
user2357112 поддерживает Монику
86

Хотя использование пустых скобок в определении класса может быть синтаксически некорректным, скобки после определения класса используются для обозначения наследования, например:

class A(baseClass):
    ...

В Python предпочтительный синтаксис для объявления класса без каких-либо базовых классов просто:

class A:
    ...

Не используйте круглые скобки, если вы не создаете подклассы других классов.

В документах по этому вопросу должны дать вам лучшее понимание того , как объявить и использование классов в Python.

Рэйф Кеттлер
источник