Синтаксис визначення класу Python


90

Чи є різниця між

class A:
    ...

і

class A():
    ...

Я щойно зрозумів, що пару моїх класів визначено як перші, і вони працюють чудово. Чи мають значення пусті дужки?

Відповіді:


22

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


7
Більше не відповідає дійсності в python 3; про все, що походить від objectнісенітниці, подбають автоматично.
тимчасове_користувацьке

4
Чи була class A()коли-небудь синтаксична помилка? Документи Python 1.4 кажуть, що це нормально, і це найстаріші документи, які все ще доступні на python.org.
user2357112 підтримує Моніку

86

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

class A(baseClass):
    ...

У Python бажаним синтаксисом для оголошення класу без будь-яких базових класів є просто:

class A:
    ...

Не використовуйте дужки, якщо ви не підкласуєте інші класи.

У документах з цього питання повинні дати вам краще розуміння того , як оголосити і використання класів в Python.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.