Python - Refleksi
Helo di sana, ahli penyihir Python masa depan! Hari ini, kita akan melakukan perjalanan yang menarik ke atas dunia penyihir Python refleksi. Jangan khawatir jika anda belum pernah mendengar tentang refleksi sebelum ini - pada akhir tutorial ini, anda akan melakukan refleksi seperti profesional! Jadi, rakamkan papan tik anda (saya maksudkan, papan ketik), dan mari kita melompat masuk!
Apa itu Refleksi?
Sebelum kita mula, mari kita faham apa itu refleksi. Dalam pemrograman, refleksi adalah seperti memiliki cermin yang membolehkan program untuk memeriksa, mengintrospektif, dan mengubah struktur dan tingkah laku sendiri pada saat runtime. Ia seperti memberikan kod anda keupayaan untuk melihat dirinya sendiri dan berkata, "Hai, apa yang membuatkan saya?" cukup keren, kan?
Fungsi type()
Mari kita mula dengan fungsi type()
. Ini adalah seperti bertanya kepada objek, "Apakah jenis kamu?"
# Contoh 1: Menggunakan type()
x = 5
y = "Helo"
z = [1, 2, 3]
print(type(x)) # Output: <class 'int'>
print(type(y)) # Output: <class 'str'>
print(type(z)) # Output: <class 'list'>
Dalam contoh ini, kita bertanya kepada variabel yang berbeza jenis apa mereka. Fungsi type()
memberitahu kita bahwa x
adalah integer, y
adalah rentetan, dan z
adalah senarai. Ia seperti melakukan perbualan dengan variabel anda!
Fungsi isinstance()
Berikutnya adalah isinstance()
. Fungsi ini adalah seperti bertanya, "Adakah kamu sebahagian daripada keluarga ini?"
# Contoh 2: Menggunakan isinstance()
x = 5
y = "Helo"
print(isinstance(x, int)) # Output: True
print(isinstance(y, str)) # Output: True
print(isinstance(x, str)) # Output: False
Di sini, kita memeriksa jika x
adalah contoh bagi int
(yang ianya), jika y
adalah contoh bagi str
(yang ianya), dan jika x
adalah contoh bagi str
(yang ianya bukan). Ia seperti bertanya kepada seseorang jika mereka adalah ahli club tertentu!
Fungsi issubclass()
Bergerak ke issubclass()
. Ini adalah seperti bertanya, "Adakah kamu berkaitan dengan keluarga ini?"
# Contoh 3: Menggunakan issubclass()
class Animal:
pass
class Dog(Animal):
pass
print(issubclass(Dog, Animal)) # Output: True
print(issubclass(Animal, Dog)) # Output: False
Dalam contoh ini, kita memeriksa jika Dog
adalah subkelas bagi Animal
(yang ianya), dan jika Animal
adalah subkelas bagi Dog
(yang ianya bukan). Ia seperti bertanya jika poodle adalah jenis anjing, versus bertanya jika semua anjing adalah poodle!
Fungsi callable()
Sekarang, mari kita bercakap tentang callable()
. Fungsi ini memeriksa jika objek boleh dipanggil (seperti fungsi).
# Contoh 4: Menggunakan callable()
def greet():
print("Helo!")
x = 5
print(callable(greet)) # Output: True
print(callable(x)) # Output: False
Di sini, kita memeriksa jika greet
(yang adalah fungsi) boleh dipanggil, dan jika x
(yang hanya adalah nombor) boleh dipanggil. Ia seperti bertanya, "Bolehkah saya gunakan kamu sebagai fungsi?"
Fungsi getattr()
getattr()
adalah seperti cara yang sopan untuk meminta atribut salah satu objek.
# Contoh 5: Menggunakan getattr()
class Person:
name = "Alice"
age = 30
p = Person()
print(getattr(p, "name")) # Output: Alice
print(getattr(p, "job", "Tidak Bekerja")) # Output: Tidak Bekerja
Dalam contoh ini, kita meminta objek Person
kami untuk atribut name
dia punya. Kita juga meminta atribut job
dia tidak punya, jadi kita memberikan nilai lalai "Tidak Bekerja".
Fungsi setattr()
setattr()
adalah seperti memberikan objek atribut baru atau mengubah atribut yang ada.
# Contoh 6: Menggunakan setattr()
class Car:
color = "merah"
my_car = Car()
print(my_car.color) # Output: merah
setattr(my_car, "color", "biru")
print(my_car.color) # Output: biru
setattr(my_car, "brand", "Toyota")
print(my_car.brand) # Output: Toyota
Di sini, kita mengubah color
kereta kita dari merah menjadi biru, dan kemudian memberikan ia atribut brand
baru.
Fungsi hasattr()
hasattr()
adalah seperti bertanya kepada objek, "Adakah kamu ada atribut ini?"
# Contoh 7: Menggunakan hasattr()
class Book:
title = "Python for Beginners"
pages = 200
my_book = Book()
print(hasattr(my_book, "title")) # Output: True
print(hasattr(my_book, "author")) # Output: False
Dalam contoh ini, kita memeriksa jika objek Book
kita ada atribut title
(yang ianya) dan atribut author
(yang ianya tidak).
Fungsi dir()
Akhirnya, mari kita lihat dir()
. Fungsi ini adalah seperti bertanya kepada objek, "Apa yang kamu boleh lakukan?"
# Contoh 8: Menggunakan dir()
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print("Woof!")
my_dog = Dog("Buddy")
print(dir(my_dog))
Ini akan menghasilkan senarai semua atribut dan metode objek Dog
kita, termasuk name
dan bark
, serta beberapa atribut terbina-dalam yang semua objek ada.
Ringkasan Fungsi Refleksi
Berikut adalah ringkasan semua fungsi refleksi yang kita pelajari:
Fungsi | Tujuan |
---|---|
type() | Mengembalikan jenis objek |
isinstance() | Memeriksa jika objek adalah contoh kelas yang dinyatakan |
issubclass() | Memeriksa jika kelas adalah subkelas dari kelas lain |
callable() | Memeriksa jika objek boleh dipanggil (seperti fungsi) |
getattr() | Mendapatkan nilai atribut objek |
setattr() | Menetapkan nilai atribut objek |
hasattr() | Memeriksa jika objek memiliki atribut khusus |
dir() | Mengembalikan senarai atribut dan metode objek |
Dan itu adalah semua, rakan-rakan! Anda baru saja melakukan langkah pertama anda ke atas dunia Python refleksi. Ingat, alat ini adalah seperti melakukan perbualan dengan kod anda. Mereka membolehkan program anda untuk memeriksa diri mereka sendiri dan membuat keputusan berdasarkan apa yang mereka temui. Ia adalah fitur yang kuat yang dapat membuat kod anda lebih fleksibel dan dinamik.
Sebagai anda teruskan perjalanan Python anda, anda akan menemukan banyak cara lagi untuk menggunakan refleksi untuk membuat program yang lebih pintar dan lebih lincah. Teruskan untuk berlatih, teruskan untuk menjelajahi, dan yang paling penting, teruskan untuk bersenang-senang dengan Python!
Credits: Image by storyset