Pertanyaan Kelas dengan Object sebagai parameter


Saya mencoba menerjemahkan beberapa kode python ke kode scala. Jadi saya total noob di Python.

Tapi mengapa beberapa kelas memiliki objek sebagai parameter tetapi tidak pernah secara eksplisit menggunakannya? Apa alasannya untuk memilikinya sebagai parameter di tempat pertama?

Contoh:

class Table(object)

Terima kasih atas waktu Anda.


75
2017-09-11 00:39


asal


Jawaban:


Dalam Python2 ini menyatakan Table untuk menjadi kelas gaya baru (Berbeda dengan 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.

class Classic: pass
class NewStyle(object): pass

print(dir(Classic))
# ['__doc__', '__module__']

print(dir(NewStyle))
# ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

Juga, properti dan super tidak berfungsi dengan kelas klasik.

Dalam Python2 itu adalah ide yang baik untuk membuat semua kelas kelas baru. (Meskipun banyak kelas di perpustakaan standar masih kelas klasik, demi kompatibilitas mundur.)

Secara umum, dalam pernyataan seperti

class Foo(Base1, Base2):

Foo sedang dinyatakan sebagai kelas yang mewarisi dari kelas dasar Base1 dan Base2.

object adalah ibu dari semua kelas dengan Python. Ini adalah kelas gaya baru, jadi mewarisi dari object membuat Table kelas gaya baru.


81
2017-09-11 00:46



Itu Table kelas memperluas sebuah kelas yang disebut object. Itu bukan argumen. Alasan Anda mungkin ingin memperpanjang object secara eksplisit adalah mengubah kelas menjadi kelas gaya baru. Jika Anda tidak secara eksplisit menentukan itu meluas object, hingga Python 3, akan menjadi default untuk kelas gaya lama. (Karena Python 3, semua kelas adalah gaya baru, apakah Anda secara eksplisit memperpanjang object atau tidak.)

Untuk informasi lebih lanjut tentang kelas gaya baru dan gaya lama, silakan lihat pertanyaan ini.


14
2017-09-11 00:42



class Table dan class Table (object) tidak berbeda untuk Python.

Ini bukan parameter, yang memanjang dari objek (yang merupakan basis Kelas seperti banyak bahasa lain).

Semua yang dikatakan adalah bahwa ia mewarisi apa pun yang didefinisikan dalam "objek". Ini adalah perilaku default.


2
2017-09-11 00:42



Hanya sebuah catatan bahwa perbedaan "gaya baru" vs "gaya lama" adalah spesifik untuk Python 2.x; di 3.x, semua kelas "gaya baru".


2
2017-09-11 10:17



objek adalah tipe objek kelas yang paling dasar yang didefinisikan dalam python. Atribut objek dapat dilihat seperti di bawah ini

** >>> dir (objek)

['kelas','delattr','dokter','format','getattribute','hash','init','baru','mengurangi','reduce_ex','repr','setattr','ukuran dari','str','subclasshook'] **

Jadi Tabel (objek) hanyalah warisan.!


1
2017-12-06 06:25



1) Nama kelas (objek): 2) nama kelas: Keduanya sama tetapi yang pertama lebih baik dalam hal menulis, terlihat lebih baik saat mewarisi kelas lain ke kelas lain, saya terlihat homogen.

Bagaimana sama? Jadi, setiap hal di Python berada di bawah objek berarti setiap benda di Python memiliki properti objek, jika menulis atau tidak akan memahaminya. Pada awalnya kami secara eksplisit menceritakannya dalam hitungan detik, kami tidak.


0
2017-12-06 01:20