Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Objek dan Kelas Python

Objek dan Kelas Python

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 deskripsi ini kami membangun rumah. Rumah adalah objeknya.

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


Mendefinisikan Kelas dengan Python

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

String pertama di dalam kelas disebut docstring dan memiliki deskripsi singkat tentang kelas. Meskipun 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 didefinisikan. Atribut dapat berupa data atau fungsi.

Ada juga atribut khusus di dalamnya yang dimulai dengan garis bawah ganda __ . Misalnya, __doc__ memberi kita docstring dari 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 tersebut.

class Person:
    "This is a person class"
    age = 10

    def greet(self):
        print('Hello')


# Output: 10
print(Person.age)

# Output: <function Person.greet>
print(Person.greet)

# Output: "This is a person class"
print(Person.__doc__)

Keluaran

10
<function Person.greet at 0x7fc78c6e8160>
This is a person class

Membuat Objek dengan Python

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

Itu 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.

Artinya, sejak Person.greet adalah objek fungsi (atribut kelas), Person.greet akan 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: <function Person.greet>
print(Person.greet)

# Output: <bound method Person.greet of <__main__.Person object>>
print(harry.greet)

# Calling object's greet() method
# Output: Hello
harry.greet()

Keluaran

<function Person.greet at 0x7fd288e4e160>
<bound method Person.greet of <__main__.Person object at 0x7fd288e9fa30>>
Hello

Anda mungkin telah memperhatikan self parameter dalam definisi fungsi di dalam kelas tetapi kami memanggil metode hanya sebagai harry.greet() tanpa argumen apapun. Masih berfungsi.

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 yang sesuai dengan daftar argumen yang dibuat dengan menyisipkan objek metode sebelum argumen pertama.

Untuk alasan ini, argumen pertama dari fungsi di kelas harus objek itu sendiri. Ini secara konvensional disebut diri . Itu bisa disebut sebaliknya, tetapi kami sangat menyarankan untuk mengikuti konvensi.

Sekarang Anda pasti sudah familiar dengan class object, instance object, function object, method object dan perbedaannya.


Konstruktor dengan Python

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

Salah satu yang menarik adalah __init__() fungsi. Fungsi khusus ini dipanggil setiap kali objek baru dari kelas itu dipakai.

Jenis fungsi ini juga disebut konstruktor dalam Pemrograman Berorientasi Objek (OOP). Kami biasanya menggunakannya untuk menginisialisasi semua variabel.

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)

Keluaran

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

Dalam contoh di atas, kami mendefinisikan kelas baru untuk mewakili bilangan kompleks. Ini memiliki dua fungsi, __init__() untuk menginisialisasi variabel (default ke nol) dan get_data() untuk menampilkan nomor dengan benar.

Hal yang menarik untuk diperhatikan pada langkah di atas adalah bahwa atribut suatu objek dapat dibuat dengan cepat. Kami membuat atribut baru attr untuk objek num2 dan membacanya juga. Tapi ini tidak membuat atribut itu untuk objek num1 .


Menghapus Atribut dan Objek

Atribut apa pun dari suatu objek dapat dihapus kapan saja, menggunakan del penyataan. 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'

Kita 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, ini lebih rumit dari itu. Saat kita melakukan c1 = ComplexNumber(1,3) , objek instance baru dibuat di memori dan nama c1 mengikatnya.

Pada perintah del c1 , pengikatan ini dihapus dan nama c1 dihapus dari namespace yang sesuai. Namun objek tetap ada dalam memori dan jika tidak ada nama lain yang terikat padanya, objek tersebut kemudian secara otomatis dimusnahkan.

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


Python

  1. C# Kelas dan Objek
  2. C# kelas abstrak dan metode
  3. C# Kelas Parsial dan Metode Parsial
  4. C# kelas dan metode tersegel
  5. Kelas dan Objek C++
  6. Fungsi teman C++ dan Kelas teman
  7. Kata Kunci dan Pengidentifikasi Python
  8. Pernyataan Python, Indentasi dan Komentar
  9. Direktori Python dan Manajemen File
  10. Pengecualian Kustom Python