Python - Atribut Kelas
Halo, pemrogram aspiran! Hari ini, kita akan memasuki dunia yang menarik tentang atribut kelas Python. Jangan khawatir jika Anda baru mengenal pemrograman; saya akan memandu Anda melalui perjalanan ini langkah demi langkah, sama seperti yang saya lakukan untuk banyak siswa selama tahun-tahun pengajaran saya. Jadi, mari kita mulai!
Atribut Kelas (Variabel)
Atribut kelas adalah variabel yang milik seluruh kelas, bukan hanya sebuah instance khusus dari kelas. Pilihannya sebagai karakteristik yang dibagi oleh semua objek dari kelas tersebut.
Mari kita mulai dengan contoh sederhana:
class Dog:
species = "Canis familiaris"
def __init__(self, name, age):
self.name = name
self.age = age
fluffy = Dog("Fluffy", 3)
buddy = Dog("Buddy", 5)
print(Dog.species) # Output: Canis familiaris
print(fluffy.species) # Output: Canis familiaris
print(buddy.species) # Output: Canis familiaris
Dalam contoh ini, species
adalah sebuah atribut kelas. Itu didefinisikan langsung di dalam kelas, tetapi di luar semua metode. Semua objek Dog
memiliki atribut ini.
Mengakses Atribut Kelas
Seperti yang dapat Anda lihat dari contoh di atas, Anda dapat mengakses atribut kelas dengan dua cara:
- Melalui kelas itu sendiri:
Dog.species
- Melalui setiap instance dari kelas:
fluffy.species
ataubuddy.species
Kedua cara tersebut akan memberikan hasil yang sama. Hal ini seperti bertanya, "Apakah spesies anjing?" atau "Apakah spesies Fluffy?" - jawabannya adalah sama!
Mengubah Atribut Kelas
Atribut kelas dapat diubah, tetapi hati-hati! Ketika Anda mengubah sebuah atribut kelas, itu akan berubah untuk semua instance dari kelas. Mari kita lihat contoh:
class Cat:
species = "Felis catus"
count = 0
def __init__(self, name):
self.name = name
Cat.count += 1
whiskers = Cat("Whiskers")
mittens = Cat("Mittens")
print(Cat.count) # Output: 2
print(whiskers.count) # Output: 2
print(mittens.count) # Output: 2
Cat.species = "Felis silvestris catus"
print(Cat.species) # Output: Felis silvestris catus
print(whiskers.species) # Output: Felis silvestris catus
print(mittens.species) # Output: Felis silvestris catus
Dalam contoh ini, kita menggunakan sebuah atribut kelas count
untuk melacak berapa banyak kucing yang telah kita buat. Setiap kali kita membuat sebuah objek Cat
baru, kita menambahkan Cat.count
. Kita juga mengubah species
untuk semua kucing sekaligus dengan mengubah Cat.species
.
Signifikasi Atribut Kelas
Atribut kelas sangat berguna dalam beberapa skenario:
- Menyimpan konstanta yang harus sama untuk semua instance dari sebuah kelas.
- Melacak data di seluruh instance dari sebuah kelas (seperti contoh kita
Cat.count
). - Mendefinisikan nilai default yang dapat diubah jika diperlukan oleh instance.
Atribut Kelas Built-In
Kelas Python datang dengan beberapa atribut built-in yang dapat sangat membantu. Mari kita lihat beberapa:
class MyClass:
x = 5
def my_method(self):
pass
print(MyClass.__name__) # Output: MyClass
print(MyClass.__doc__) # Output: None (karena kita tidak menyediakan sebuah docstring)
print(MyClass.__dict__) # Output: {'__module__': '__main__', 'x': 5, 'my_method': <function MyClass.my_method at ...>}
print(MyClass.__module__) # Output: __main__
Mengakses Atribut Built-In Kelas
Berikut adalah tabel dari beberapa atribut built-in umum dan cara mengakses mereka:
Atribut | Deskripsi | Akses |
---|---|---|
name | Nama kelas | MyClass.name |
doc | Docstring kelas | MyClass.doc |
dict | Dictionary yang berisi namespace kelas | MyClass.dict |
module | Nama modul di mana kelas didefinisikan | MyClass.module |
bases | Tuple yang berisi kelas dasar | MyClass.bases |
Atribut Instance
Sekarang bahwa kita mengerti atribut kelas, mari kita singkatkan tentang atribut instance untuk melihat perbedaan. Atribut instance adalah spesifik untuk setiap objek yang dibuat dari kelas.
class Student:
school = "Python High" # Atribut kelas
def __init__(self, name, grade):
self.name = name # Atribut instance
self.grade = grade # Atribut instance
alice = Student("Alice", 10)
bob = Student("Bob", 11)
print(Student.school) # Output: Python High
print(alice.school) # Output: Python High
print(bob.school) # Output: Python High
print(alice.name) # Output: Alice
print(bob.name) # Output: Bob
Student.school = "Python University"
print(alice.school) # Output: Python University
print(bob.school) # Output: Python University
alice.school = "Python Elementary"
print(alice.school) # Output: Python Elementary
print(Student.school) # Output: Python University
print(bob.school) # Output: Python University
Atribut Instance Vs Atribut Kelas
Perbedaan utama antara atribut instance dan atribut kelas adalah:
- Atribut kelas adalah dibagi oleh semua instance, sementara atribut instance adalah unik untuk setiap instance.
- Atribut kelas didefinisikan di dalam kelas tetapi di luar semua metode, sementara atribut instance biasanya didefinisikan di dalam metode
__init__
. - Mengubah sebuah atribut kelas akan mempengaruhi semua instance (kecuali instance memiliki atribut yang menimpa itu), sementara mengubah sebuah atribut instance hanya akan mempengaruhi instance tersebut.
Ingat, ketika Anda mencoba mengakses sebuah atribut pada sebuah instance, Python pertama-tama mencari sebuah atribut instance. Jika tidak ditemukan, maka ia mencari sebuah atribut kelas. Itu adalah alasan mengapa kita dapat "menimpa" sebuah atribut kelas untuk sebuah instance tertentu dengan membuat sebuah atribut instance dengan nama yang sama.
Dan itu adalah! Anda baru saja menyelesaikan sebuah kelas singkat tentang atribut kelas Python. Ingat, kunci untuk menguasai pemrograman adalah praktek. Jadi jangan takut untuk bereksperimen dengan konsep ini. Buat kelas Anda sendiri, mainkan dengan atribut, dan lihat apa yang terjadi. Selamat coding!
Credits: Image by storyset