Sintaks definisi kelas Python


90

Apakah ada perbedaan antara

class A:
    ...

dan

class A():
    ...

Saya baru menyadari bahwa beberapa kelas saya didefinisikan sebagai kelas pertama dan mereka bekerja dengan baik. Apakah tanda kurung kosong ada bedanya?

Jawaban:


22

Yang terakhir adalah kesalahan sintaks pada versi lama Python. Dalam Python 2.x Anda harus mendapatkan dari objectkapan pun memungkinkan, karena beberapa fitur yang berguna hanya tersedia dengan kelas gaya baru (menurunkan dari objectadalah opsional di Python 3.x, karena kelas gaya baru adalah default di sana).


7
Tidak lagi benar di python 3; semua yang berasal dari objectomong kosong diurus secara otomatis.
temporary_user_name

4
Apakah class A()pernah terjadi kesalahan sintaks? Dokumen Python 1.4 mengatakan tidak apa-apa, dan itu adalah dokumen tertua yang masih tersedia di python.org.
user2357112 mendukung Monica

86

Meskipun mungkin tidak salah secara sintaksis untuk menggunakan tanda kurung kosong dalam definisi kelas, tanda kurung setelah definisi kelas digunakan untuk menunjukkan pewarisan, misalnya:

class A(baseClass):
    ...

Dalam Python, sintaks yang disukai untuk deklarasi kelas tanpa kelas dasar adalah:

class A:
    ...

Jangan gunakan tanda kurung kecuali Anda membuat subclass kelas lain.

The docs tentang masalah ini harus memberikan pemahaman yang lebih baik tentang bagaimana untuk menyatakan dan kelas digunakan dalam Python.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.