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

Menguasai Objek dan Kelas Python: Panduan Praktis

Python Objects and Classes

Tutorial ini menjelajahi fitur inti berorientasi objek Python, memandu Anda melalui pembuatan kelas, instantiasi, dan praktik terbaik untuk kode yang kuat.

Video: Python Classes and Objects

Python Objects and Classes

Python secara fundamental berorientasi objek. Sementara pemrograman prosedural berfokus pada fungsi, OOP berpusat pada objek yang menggabungkan data dan perilaku.

Sebuah objek adalah sekumpulan atribut (data) dan metode (fungsi). Sebuah kelas adalah cetak biru yang mendefinisikan struktur objek.

Bayangkan kelas sebagai cetak biru rumah—merinci kamar, pintu, jendela. Setiap rumah yang dibangun adalah objek, atau instance, yang dibuat dari cetak biru tersebut.

Banyak objek dapat dibuat dari kelas yang sama. Instantiasi adalah proses pembuatan objek dari kelas.


Mendefinisikan Kelas di Python

Definisi kelas dimulai dengan kata kunci class, mencerminkan cara fungsi dimulai dengan def. String pertama dalam kelas adalah docstring, yang memberikan deskripsi ringkas.

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

Mendefinisikan kelas menciptakan namespace baru untuk atributnya, yang dapat berupa data atau metode. Atribut khusus yang dimulai dengan garis bawah ganda, seperti __doc__, menyimpan metadata seperti docstring.

Setelah didefinisikan, objek kelas dibuat dan dapat digunakan untuk mengakses atribut atau membuat objek baru.

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

Output

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

Membuat Objek di Python

Kelas berfungsi sebagai pabrik untuk objek. Instantiasi mirip dengan pemanggilan fungsi:

>>> harry = Person()

Objek yang dihasilkan harry dapat mengakses atribut kelas melalui notasi titik. Metode kelas menjadi metode bound pada instance.

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

Output

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

Perhatikan parameter self dalam definisi metode. Saat metode dipanggil pada instance, Python secara otomatis melewatkan instance sebagai argumen pertama, memungkinkan harry.greet() dieksekusi tanpa menyediakan self secara eksplisit.

Menurut konvensi, self digunakan, meskipun nama apa pun valid secara sintaks. Mengikuti konvensi ini meningkatkan keterbacaan dan selaras dengan standar komunitas.


Konstruktor di Python

Metode khusus yang diawali dengan garis bawah ganda memerankan peran khusus. Metode __init__, dipanggil saat instantiasi, bertindak sebagai konstruktor, menginisialisasi status instance.

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 add a dynamic attribute 'attr'
num2 = ComplexNumber(5)
num2.attr = 10
# Output: (5, 0, 10)
print((num2.real, num2.imag, num2.attr))
# Accessing a missing attribute raises an error
print(num1.attr)

Output

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'

Contoh ini menunjukkan bahwa atribut dapat ditambahkan secara dinamis ke instance individual tanpa mempengaruhi yang lain.


Menghapus Atribut dan Objek

Atribut dapat dihapus dengan pernyataan del. Menghapus metode atau atribut kelas mempengaruhi panggilan selanjutnya.

>>> 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'

Objek itu sendiri dapat dihapus. Menghapus referensi membebaskan nama; jika tidak ada referensi lain, objek secara otomatis di-garbage-collect.

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

Di Python, manajemen memori ditangani oleh reference counting dan garbage collector siklus, memastikan pembersihan sumber daya yang efisien.

Menguasai Objek dan Kelas Python: Panduan Praktis

Python

  1. Kelas dan Objek C#: Fondasi untuk OOP yang Kuat
  2. Menguasai Kelas dan Metode Abstrak C#: Panduan Praktis
  3. Memahami Kelas dan Metode Parsial C#
  4. Menguasai Kelas dan Metode Tersegel di C#—Kapan Menggunakannya, Contoh Jelas, dan Tingkatkan Keamanan serta Performa Kode
  5. Kelas & Objek C++: Panduan Praktis Pemrograman Berorientasi Objek
  6. Fungsi Teman dan Kelas Teman C++: Menguasai Kontrol Akses
  7. Kata Kunci dan Pengidentifikasi Python: Menguasai Kata Terjamin dan Konvensi Penamaan
  8. Pernyataan, Indentasi, dan Komentar Python: Panduan Jelas
  9. Menguasai Operasi Direktori dan File di Python
  10. Menguasai Exception Kustom Python: Panduan Praktis