Kelas dan Objek Python (Dengan Contoh)

Dalam tutorial ini, anda akan belajar mengenai fungsi teras objek dan kelas Python. Anda akan belajar apa itu kelas, bagaimana membuatnya dan menggunakannya dalam program anda.

Video: Kelas dan Objek Python

Objek dan Kelas Python

Python adalah bahasa pengaturcaraan berorientasikan objek. Tidak seperti pengaturcaraan berorientasikan prosedur, di mana penekanan utama adalah pada fungsi, pengaturcaraan berorientasikan objek menekankan pada objek.

Objek hanyalah kumpulan data (pemboleh ubah) dan kaedah (fungsi) yang bertindak pada data tersebut. Begitu juga, kelas adalah cetak biru untuk objek tersebut.

Kita boleh menganggap kelas sebagai lakaran (prototaip) rumah. Ia mengandungi semua perincian mengenai lantai, pintu, tingkap dan lain-lain. Berdasarkan keterangan ini kami membina rumah. Rumah adalah objek.

Oleh kerana banyak rumah boleh dibuat dari cetak biru rumah, kita boleh membuat banyak objek dari kelas. Objek juga disebut sebagai contoh kelas dan proses membuat objek ini disebut instantiasi .

Mendefinisikan Kelas di Python

Seperti definisi fungsi bermula dengan kata kunci def di Python, definisi kelas bermula dengan kata kunci kelas.

Rentetan pertama di dalam kelas disebut docstring dan mempunyai penerangan ringkas mengenai kelas. Walaupun tidak wajib, ini sangat digalakkan.

Berikut adalah definisi kelas yang mudah.

 class MyNewClass: '''This is a docstring. I have created a new class''' pass

Kelas membuat ruang nama tempatan baru di mana semua atributnya ditentukan. Atribut mungkin berupa data atau fungsi.

Terdapat juga atribut khas di dalamnya yang bermula dengan garis bawah dua __. Contohnya, __doc__memberi kita dokumentasi kelas itu.

Sebaik sahaja kita menentukan kelas, objek kelas baru dibuat dengan nama yang sama. Objek kelas ini membolehkan kita mengakses atribut yang berbeza dan juga untuk membuat objek baru dari kelas tersebut.

 class Person: "This is a person class" age = 10 def greet(self): print('Hello') # Output: 10 print(Person.age) # Output: print(Person.greet) # Output: 'This is my second class' print(Person.__doc__)

Pengeluaran

 10 Ini adalah kelas orang

Membuat Objek di Python

Kami melihat bahawa objek kelas dapat digunakan untuk mengakses atribut yang berbeza.

Ia juga dapat digunakan untuk membuat instance objek baru (instantiation) dari kelas tersebut. Prosedur untuk membuat objek serupa dengan fungsi panggilan.

 >>> harry = Person()

Ini akan membuat contoh objek baru bernama harry. Kita boleh mengakses atribut objek menggunakan awalan nama objek.

Atribut mungkin berupa data atau kaedah. Kaedah objek adalah fungsi yang sesuai dari kelas itu.

Ini bermaksud mengatakan, kerana Person.greetobjek fungsi (atribut kelas), Person.greetakan menjadi objek kaedah.

 class Person: "This is a person class" age = 10 def greet(self): print('Hello') # create a new object of Person class harry = Person() # Output: print(Person.greet) # Output:  print(harry.greet) # Calling object's greet() method # Output: Hello harry.greet() 

Pengeluaran

  Helo 

Anda mungkin telah memperhatikan selfparameter dalam definisi fungsi di dalam kelas tetapi kami memanggil kaedahnya harry.greet()tanpa sebarang argumen. Ia masih berjaya.

Ini kerana, setiap kali objek memanggil metodenya, objek itu sendiri dilewatkan sebagai argumen pertama. Jadi, harry.greet()diterjemahkan menjadi Person.greet(harry).

Secara umum, memanggil kaedah dengan senarai n argumen sama dengan memanggil fungsi yang sesuai dengan senarai argumen yang dibuat dengan memasukkan objek kaedah sebelum argumen pertama.

Atas sebab-sebab ini, argumen pertama fungsi dalam kelas mestilah objek itu sendiri. Ini secara konvensional disebut diri. Ia boleh dinamakan sebaliknya tetapi kami sangat mengesyorkan untuk mengikuti konvensyen tersebut.

Sekarang anda mesti biasa dengan objek kelas, objek contoh, objek fungsi, objek kaedah dan perbezaannya.

Pembina di Python

Fungsi kelas yang dimulakan dengan garis bawah ganda __disebut fungsi khas kerana ia mempunyai makna khas.

Salah satu kepentingan tertentu adalah __init__()fungsi. Fungsi khas ini dipanggil setiap kali objek baru kelas itu dibuat.

This type of function is also called constructors in Object Oriented Programming (OOP). We normally use it to initialize all the variables.

 class ComplexNumber: def __init__(self, r=0, i=0): self.real = r self.imag = i def get_data(self): print(f'(self.real)+(self.imag)j') # Create a new ComplexNumber object num1 = ComplexNumber(2, 3) # Call get_data() method # Output: 2+3j num1.get_data() # Create another ComplexNumber object # and create a new attribute 'attr' num2 = ComplexNumber(5) num2.attr = 10 # Output: (5, 0, 10) print((num2.real, num2.imag, num2.attr)) # but c1 object doesn't have attribute 'attr' # AttributeError: 'ComplexNumber' object has no attribute 'attr' print(num1.attr)

Output

 2+3j (5, 0, 10) Traceback (most recent call last): File "", line 27, in print(num1.attr) AttributeError: 'ComplexNumber' object has no attribute 'attr'

In the above example, we defined a new class to represent complex numbers. It has two functions, __init__() to initialize the variables (defaults to zero) and get_data() to display the number properly.

An interesting thing to note in the above step is that attributes of an object can be created on the fly. We created a new attribute attr for object num2 and read it as well. But this does not create that attribute for object num1.

Deleting Attributes and Objects

Setiap atribut objek dapat dihapus kapan saja, menggunakan delpernyataan. Cuba yang berikut pada shell Python untuk melihat hasilnya.

 >>> num1 = ComplexNumber(2,3) >>> del num1.imag >>> num1.get_data() Traceback (most recent call last):… AttributeError: 'ComplexNumber' object has no attribute 'imag' >>> del ComplexNumber.get_data >>> num1.get_data() Traceback (most recent call last):… AttributeError: 'ComplexNumber' object has no attribute 'get_data'

Kita bahkan boleh memadam objek itu sendiri, dengan menggunakan pernyataan del.

 >>> c1 = ComplexNumber(1,3) >>> del c1 >>> c1 Traceback (most recent call last):… NameError: name 'c1' is not defined

Sebenarnya, ia lebih rumit daripada itu. Apabila kita melakukannya c1 = ComplexNumber(1,3), objek contoh baru dibuat dalam memori dan nama c1 mengikat dengannya.

Pada perintah del c1, pengikatan ini dikeluarkan dan nama c1 dihapus dari ruang nama yang sesuai. Objek itu tetap ada dalam ingatan dan jika tidak ada nama lain yang terikat padanya, ia kemudian secara automatik musnah.

Pemusnahan automatik objek yang tidak dirujuk di Python ini juga disebut pengumpulan sampah.

Memadam objek di Python menghilangkan nama yang mengikat

Artikel menarik...