Farih.co.id
Home Programming Cara Menyesuaikan Perilaku Kelas dengan Python Menggunakan Metode Ajaib

Cara Menyesuaikan Perilaku Kelas dengan Python Menggunakan Metode Ajaib

Python Online Courses Featured Image

Di Python, kelas menyediakan cara yang bersih untuk menggabungkan data dan fungsionalitas menjadi elemen yang dapat digunakan kembali. Membuat kelas khusus memungkinkan Anda membuat model entitas dunia nyata seperti pengguna, produk, dan karyawan.


VIDEO MUO HARI INI

GULIR UNTUK MELANJUTKAN ISI

Kelas Python menentukan metode ajaib yang dapat Anda sesuaikan untuk memungkinkan Anda membentuk perilaku kelas Anda untuk situasi unik.


Memahami Metode Ajaib

wanita meniup taburan di tangannya

Bayangkan metode ajaib, juga disebut metode dunder, sebagai mantra rahasia atau nyanyian tersembunyi yang dipanggil secara otomatis oleh Python saat Anda melakukan tindakan tertentu pada suatu objek.

Python menyediakan banyak perilaku bawaan untuk kelas melalui metode instance, statis, dan kelas. Anda dapat membuat kelas Python, dan menyesuaikannya lebih jauh lagi menggunakan metode ajaib.

Metode ajaib adalah metode instan dalam Python yang memiliki dua garis bawah (__metode__) sebelum dan sesudah nama metode.

Metode khusus ini memberikan instruksi kepada Python tentang cara menangani objek suatu kelas. Berikut beberapa metode ajaib yang umum digunakan di kelas Python:

  • __gt__: Metode ini memeriksa apakah satu objek lebih besar dari yang lain.
  • __init__: Metode ini berjalan saat Anda membuat instance kelas, dan ini terutama untuk inisialisasi atribut.
  • __str__: Ini mengembalikan representasi string dari kelas yang mendeskripsikan objek.
  • __repr__: Metode ini memberikan keluaran yang memungkinkan Anda membuat ulang objek menggunakan evaluasi().
  • __len__: Saat Anda menggunakan Len() berfungsi pada suatu objek metode ini mengembalikan panjang objek.
  • __persamaan__: Metode ini memungkinkan perbandingan antar objek menggunakan tanda ganda yang sama dengan (==) operator.
  • __lt__: Ini mengimplementasikan perbandingan kurang dari (<) untuk objek.
  • __menambahkan__: Saat Anda menggunakan penambahan (+) operator pada objek yang dijalankan metode ini dan melakukan operasi penambahan.
  • __dapatkan barang__: Memungkinkan Anda mengambil item dari suatu objek menggunakan sintaks indeks, seperti keberatan[key].

Menerapkan Metode Ajaib

Cara terbaik untuk memahami metode ajaib adalah dengan menggunakannya.

Representasi String dari suatu Objek

Anda dapat menyesuaikan representasi string suatu objek agar mudah dibaca atau diproses lebih lanjut.

 class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p1 = Person('John', 25)
print(p1)

Ini dia yang sederhana Orang kelas dengan __init__ metode ajaib untuk menginisialisasinya. Saat Anda mencetak hal1 objek, ia menggunakan representasi string default yang disediakan oleh Python.

representasi string default objek

Untuk menyesuaikan representasi string, tentukan __str__ Dan __repr__ metode ajaib:

 class Person:
    def __init__(self, name, age, height):
        self.name = name
        self.age = age
        self.height = height

    def __str__(self):
        return f'{self.name} is {self.age} years old'

    def __repr__(self):
        return f'{self.name} is {self.age} years old'

p1 = Person('John', 25, 78)
print(p1)

Sekarang Anda memiliki representasi string yang lebih mudah dibaca dan komprehensif hal1 obyek:

representasi string yang disesuaikan dari suatu objek

Properti Panjang suatu Objek

Bayangkan, saat Anda menelepon Len() metode objek Person, Anda ingin tingginya. Menerapkan __len__ metode ajaib untuk Orang kelas:

 class Person:
    def __init__(self, name, age, height):
        self.name = name
        self.age = age
        self.height = height

    def __str__(self):
        return f'{self.name} is {self.age} years old'

    def __repr__(self):
        return f'{self.name} is {self.age} years old'

    def __len__(self):
        return self.height

p2 = Person('Issac', 25, 89)
print(len(p2))

Itu __len__ metode ajaib mengembalikan atribut ketinggian a Orang contoh. Saat Anda menelepon len(p2)itu akan memanggil __len__ metode ajaib secara otomatis yang mengembalikan ketinggian hal2 obyek.

properti len yang dimodifikasi

Menangani Perbandingan Antar Objek

Jika Anda perlu membandingkan objek suatu kelas berdasarkan properti tertentu dari kelas tersebut. Anda dapat menentukan __persamaan__ metode ajaib dan terapkan logika perbandingan Anda.

 class Person:

    def __init__(self, name, age, height):
        self.name = name
        self.age = age
        self.height = height

    def __str__(self):
        return f'{self.name} is {self.age} years old'

    def __repr__(self):
        return f'{self.name} is {self.age} years old'

    def __len__(self):
        return self.height

    def __eq__(self, other):
        return self.name == other.name and self.age == other.age

p1 = Person('John', 25, 56)
p2 = Person('John', 25, 61)

print(p1 == p2)

Itu __persamaan__ metode membandingkan nama Dan usia atribut keduanya milik orang objek untuk menentukan kesetaraan.

membandingkan dua objek dari kelas yang sama

Gandanya sama dengan (==) operator menggunakan metode ini untuk memeriksa kesetaraan daripada membandingkan identitas. Jadi dua Orang instance dianggap sama jika memiliki atribut nama dan usia yang cocok. Hal ini memungkinkan Anda untuk mengganti perilaku pemeriksaan kesetaraan default untuk kelas khusus Anda.

Dengan menerapkan metode ajaib ini, Anda dapat menentukan perilaku khusus yang akan konsisten dengan bawaan Python.

Metode Sihir Tingkat Lanjut

Berikut adalah beberapa contoh lanjutan penggunaan metode ajaib untuk menyesuaikan kelas.

Membuat Kelas Bertindak Seperti Wadah

Dengan menggunakan metode ajaib, Anda dapat mendefinisikan kelas yang berperilaku seperti container. Anda dapat menggunakan kontainer, seperti tupel, untuk menyimpan kumpulan elemen data. Mereka menyediakan berbagai metode untuk memanipulasi, mengakses, dan mengulangi elemen yang terkandung.

 class Person:
    def __init__(self):
        self.data = []

    def __len__(self):
        return len(self.data)

    def __getitem__(self, index):
        return self.data[index]

    def __setitem__(self, index, value):
        self.data[index] = value

    def __delitem__(self, index):
        del self.data[index]

p1 = Person()
p1.data = [10, 2, 7]
print(len(p1))

p1[0] = 5
print(p1[0])

Sekarang objek Person dapat berperilaku seperti sebuah wadah:

kelas bertindak seperti wadah

Menyesuaikan Akses Atribut

Menggunakan __getattr__ metode ajaib Anda dapat menyesuaikan atribut cara Orang kelas sedang diakses berdasarkan kondisi tertentu.

 class Person:
    def __getattr__(self, name):
        if name == 'age':
            return 40
        else:
            raise AttributeError(f'No attribute {name}')

p1 = Person()
print(p1.age)

Itu __getattr__ Metode ini akan berjalan ketika Anda mencoba mengakses atribut yang tidak ada secara langsung di objek. Dalam hal ini, ia memeriksa apakah nama atributnya benar usia dan mengembalikan 40.

atribut akses yang dimodifikasi

Untuk nama atribut lainnya, ini memunculkan Kesalahan Atribut dengan pesan yang sesuai.

Membuat Kelas Berperilaku Seperti Callable

Itu __panggilan__ Metode ini memungkinkan Anda untuk memperlakukan instance kelas sebagai objek yang dapat dipanggil (yaitu fungsi).

 class Adder:
    def __call__(self, x, y):
        return x + y

adder = Adder()
print(adder(2, 3))

Saat Anda membuat sebuah instance dari Penambah dan kemudian menyebutnya dengan argumen, __panggilan__ metode berjalan dan melakukan penambahan sebelum mengembalikan hasilnya.

kelas berperilaku seperti callable

Kelebihan Operator

Dengan menggunakan metode ajaib, Anda dapat melakukan kelebihan operator. Kelebihan operator memungkinkan Anda menentukan perilaku khusus untuk operator bawaan saat digunakan dengan instance kelas Anda sendiri. Berikut adalah contoh umum yang menjelaskan kelebihan beban operator.

 class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, other):
        if isinstance(other, Vector):
            new_x = self.x + other.x
            new_y = self.y + other.y
            return Vector(new_x, new_y)
        else:
            raise TypeError("Unsupported operand type for +")

    def __str__(self):
        return f"({self.x}, {self.y})"


v1 = Vector(2, 3)
v2 = Vector(1, 4)


v3 = v1 + v2


print(v3)

Hasilnya adalah vektor baru:

akibat kelebihan beban operator

Itu Vektor kelas mendefinisikan __menambahkan__ metode, yang dijalankan saat Anda menggunakan + operator antara dua instance kelas. Metode ini menambahkan komponen yang sesuai dari dua vektor dan mengembalikan yang baru Vektor contoh dengan hasilnya.

Di sini Anda telah melihat metode ajaib mendasar yang dapat Anda terapkan untuk menyesuaikan perilaku kelas Anda. Python memiliki lebih banyak metode ajaib yang menawarkan lebih banyak fleksibilitas saat membuat kelas. Mengacu kepada dokumentasi resmi untuk daftar lengkap.

Pemrograman Berorientasi Objek dengan Python

Metode ajaib di Python menyediakan cara ampuh untuk menyesuaikan dan meningkatkan perilaku kelas. Metode ajaib sejalan dengan konsep pemrograman berorientasi objek (OOP) dengan Python. Jadi penting untuk memahami konsep OOP ketika mencoba menggunakan metode ajaib.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad