Saya mencoba menerjemahkan beberapa kode python ke kode skala. Jadi saya benar-benar noob di Python.
Tetapi mengapa beberapa kelas memiliki objek sebagai parameter tetapi tidak pernah secara eksplisit menggunakannya? Apa alasan untuk menjadikannya sebagai parameter?
Contoh:
class Table(object)
Terima kasih atas waktu Anda.
Jawaban:
Dalam Python2 ini mendeklarasikan
Table
menjadi kelas gaya baru (sebagai lawan dari kelas "klasik"). Di Python3 semua kelas adalah kelas gaya baru, jadi ini tidak lagi diperlukan.Kelas gaya baru memiliki beberapa atribut khusus yang tidak dimiliki kelas klasik.
Juga, properti dan super tidak berfungsi dengan kelas klasik.
Dalam Python2, sebaiknya membuat semua kelas kelas gaya baru. (Meskipun banyak kelas di pustaka standar masih merupakan kelas klasik, demi kompatibilitas dengan versi sebelumnya.)
Secara umum, dalam pernyataan seperti
Foo
dideklarasikan sebagai kelas yang mewarisi dari kelas dasarBase1
danBase2
.object
adalah ibu dari semua kelas dengan Python. Ini adalah kelas gaya baru, jadi mewarisi dariobject
membuatTable
kelas gaya baru.sumber
object
daftar basis kelas) dalam tutorial .object
. Kedua pernyataan yang disatukan menyiratkan bahwa Anda tidak perlu memasukkanobject
dalam daftar basis kelas di Python3 karena semua kelas adalah kelas gaya baru di Python3.The
Table
kelas memperluas kelas yang disebutobject
. Ini bukan argumen. Alasan Anda mungkin ingin memperluasobject
secara eksplisit adalah karena mengubah kelas menjadi kelas gaya baru. Jika Anda tidak secara eksplisit menetapkannya meluasobject
, hingga Python 3, itu akan secara default menjadi kelas gaya lama. (Sejak Python 3, semua kelas adalah gaya baru, apakah Anda secara eksplisit memperluasobject
atau tidak.)Untuk informasi lebih lanjut tentang gaya baru dan kelas gaya lama, silakan lihat pertanyaan ini .
sumber
Perlu diketahui bahwa perbedaan kelas "gaya baru" vs "gaya lama" khusus untuk Python 2.x; di 3.x, semua kelas adalah "gaya baru".
sumber
class Tabel dan class Tabel (objek) tidak berbeda dengan Python.
Ini bukan sebuah parameter, yang diperluas dari objek (yang merupakan Kelas dasar seperti banyak bahasa lainnya).
Semua yang dikatakan adalah bahwa ia mewarisi apa pun yang didefinisikan dalam "objek". Ini adalah perilaku default.
sumber
object
adalah perilaku default hanya di Python 3. Dalam python 2, objek perluasan kelas memiliki atribut yang tidak akan dimiliki oleh kelas yang tidak memperluas objek.objek adalah jenis objek kelas paling dasar yang didefinisikan dalam python. Atribut objek dapat dilihat seperti di bawah ini
** >>> dir (objek)
[' class ', ' delattr ', ' doc ', ' format ', ' getattribute ', ' hash ', ' init ', ' new ', ' reduce ', ' reduce_ex ', ' repr ', ' setattr ', ' sizeof ',' str ',' subclasshook '] **
Jadi Tabel (objek) hanyalah warisan.!
sumber
1) Nama kelas (objek): 2) nama kelas: Keduanya sama tetapi yang pertama cukup baik dalam hal penulisan, terlihat lebih baik saat mewarisi kelas lain ke kelas lain, terlihat homogen.
Seberapa sama? Jadi, setiap hal di Python berada di bawah objek berarti setiap hal di Python memiliki properti objek, jika ditulis atau tidak, ia akan memahaminya. Pertama kami secara eksplisit mengatakannya di detik kami tidak melakukannya.
sumber