Kelas dan Objek Python (Dengan Contoh)

Dalam tutorial ini, Anda akan belajar tentang fungsionalitas inti dari objek dan kelas Python. Anda akan mempelajari apa itu kelas, cara membuatnya, dan menggunakannya dalam program Anda.

Video: Kelas dan Objek Python

Objek dan Kelas Python

Python adalah bahasa pemrograman berorientasi objek. Tidak seperti pemrograman berorientasi prosedur, di mana penekanan utamanya adalah pada fungsi, pemrograman berorientasi objek menekankan pada objek.

Objek hanyalah kumpulan data (variabel) dan metode (fungsi) yang bekerja pada data tersebut. Demikian pula, kelas adalah cetak biru untuk objek itu.

Kita dapat menganggap kelas sebagai sketsa (prototipe) sebuah rumah. Ini berisi semua detail tentang lantai, pintu, jendela dll. Berdasarkan uraian ini kami membangun rumah. Rumah adalah objeknya.

Karena banyak rumah dapat dibuat dari cetak biru rumah, kita dapat membuat banyak objek dari satu kelas. Objek juga disebut turunan kelas dan proses pembuatan objek ini disebut instantiation .

Mendefinisikan Kelas dengan Python

Seperti definisi fungsi yang dimulai dengan kata kunci def dengan Python, definisi kelas dimulai dengan kata kunci kelas.

String pertama di dalam kelas disebut docstring dan memiliki penjelasan singkat tentang kelas tersebut. Meski tidak wajib, ini sangat disarankan.

Berikut adalah definisi kelas sederhana.

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

Kelas membuat namespace lokal baru di mana semua atributnya ditentukan. Atribut dapat berupa data atau fungsi.

Ada juga atribut khusus di dalamnya yang diawali dengan garis bawah ganda __. Misalnya, __doc__beri kami docstring kelas itu.

Segera setelah kita mendefinisikan kelas, objek kelas baru dibuat dengan nama yang sama. Objek kelas ini memungkinkan kita untuk mengakses atribut yang berbeda serta membuat instance objek baru dari kelas itu.

 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__)

Keluaran

 10 Ini adalah kelas orang

Membuat Objek dengan Python

Kami melihat bahwa objek kelas dapat digunakan untuk mengakses atribut yang berbeda.

Ini juga dapat digunakan untuk membuat instance objek baru (instantiation) dari kelas itu. Prosedur untuk membuat objek mirip dengan pemanggilan fungsi.

 >>> harry = Person()

Ini akan membuat instance objek baru bernama harry. Kita dapat mengakses atribut objek menggunakan awalan nama objek.

Atribut dapat berupa data atau metode. Metode suatu objek adalah fungsi yang sesuai dari kelas itu.

Ini berarti mengatakan, karena Person.greetobjek fungsi (atribut kelas), Person.greetakan menjadi objek metode.

 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() 

Keluaran

  Halo 

Anda mungkin telah memperhatikan selfparameter dalam definisi fungsi di dalam kelas tetapi kami memanggil metode ini sebagai harry.greet()tanpa argumen. Itu masih berhasil.

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

Secara umum, memanggil metode dengan daftar n argumen sama dengan memanggil fungsi terkait dengan daftar argumen yang dibuat dengan memasukkan objek metode sebelum argumen pertama.

Untuk alasan ini, argumen pertama dari fungsi di kelas haruslah objek itu sendiri. Ini secara konvensional disebut diri. Ini dapat diberi nama lain tetapi kami sangat menyarankan untuk mengikuti konvensi.

Sekarang Anda harus terbiasa dengan objek kelas, objek contoh, objek fungsi, objek metode dan perbedaannya.

Konstruktor dengan Python

Fungsi kelas yang dimulai dengan garis bawah ganda __disebut fungsi khusus karena memiliki arti khusus.

Salah satu kepentingan tertentu adalah __init__()fungsinya. Fungsi khusus ini dipanggil setiap kali objek baru dari 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

Atribut apa pun dari suatu objek dapat dihapus kapan saja, menggunakan delpernyataan tersebut. Coba yang berikut ini 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'

Kami bahkan dapat menghapus objek itu sendiri, menggunakan pernyataan del.

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

Sebenarnya lebih rumit dari itu. Ketika kita melakukannya c1 = ComplexNumber(1,3), objek instance baru dibuat dalam memori dan nama c1 mengikatnya.

Pada perintah del c1, pengikatan ini dihapus dan nama c1 dihapus dari namespace terkait. Objek bagaimanapun tetap ada dalam memori dan jika tidak ada nama lain yang terikat padanya, itu kemudian secara otomatis dihancurkan.

Penghancuran otomatis objek yang tidak direferensikan dengan Python ini juga disebut pengumpulan sampah.

Menghapus objek dengan Python menghapus pengikatan nama

Artikel yang menarik...