Python - Atribut Kelas
Halo, pemrogram penyusun! Hari ini, kita akan melangkah ke dunia yang menarik tentang atribut kelas Python. Jangan khawatir jika kamu baru mengenal pemrograman; saya akan memandu kamu melalui perjalanan ini langkah demi langkah, seperti yang saya lakukan untuk banyak siswa selama tahun-tahun mengajar saya. Jadi, mari kita mulai!
Atribut Kelas (Variabel)
Atribut kelas adalah variabel yang milik keseluruhan kelas bukannya milik contoh khusus dari kelas. Pikirkan mereka sebagai karakteristik yang dibagi oleh semua objek dari kelas itu.
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 atribut kelas. Ini didefinisikan langsung di dalam kelas, tetapi di luar method manapun. Semua objek Dog
memiliki atribut ini.
Mengakses Atribut Kelas
Seperti yang bisa kamu lihat dari contoh di atas, kamu dapat mengakses atribut kelas dengan dua cara:
- Melalui kelas itu sendiri:
Dog.species
- Melalui contoh mana saja dari kelas:
fluffy.species
ataubuddy.species
Kedua cara tersebut akan memberikan kamu hasil yang sama. Ini seperti bertanya, "Apakah spesies anjing?" atau "Apakah spesies Fluffy?" - jawabannya adalah sama!
Mengubah Atribut Kelas
Atribut kelas dapat diubah, tetapi harap hati-hati! Ketika kamu mengubah atribut kelas, itu akan berubah untuk semua contoh dari kelas. Mari 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 atribut kelas count
untuk melacak berapa banyak kucing yang telah kita buat. Setiap kali kita membuat 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 konstan yang harus sama untuk semua contoh dari kelas.
- Melacak data di seluruh contoh dari kelas (seperti contoh kita
Cat.count
). - Definisikan nilai default yang dapat diubah oleh contoh jika diperlukan.
Atribut Kelas Built-In
Kelas Python datang dengan beberapa atribut built-in yang dapat sangat membantu. Mari 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 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 beberapa atribut built-in kelas umum dan cara mengakses mereka:
Atribut | Deskripsi | Akses |
---|---|---|
name | Nama kelas | MyClass.name |
doc | Docstring kelas | MyClass.doc |
dict | Kamus yang berisi ruang nama kelas | MyClass.dict |
module | Nama modul tempat kelas didefinisikan | MyClass.module |
bases | Tuple yang berisi kelas dasar | MyClass.bases |
Atribut Instans
Sekarang bahwa kita mengerti atribut kelas, mari kita singkatkan tentang atribut instans untuk melihat perbedaan. Atribut instans 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 instans
self.grade = grade # Atribut instans
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 Instans Vs Atribut Kelas
Perbedaan utama antara atribut instans dan atribut kelas adalah:
- Atribut kelas dibagi oleh semua contoh, sementara atribut instans adalah unik untuk setiap contoh.
- Atribut kelas didefinisikan di dalam kelas tetapi di luar method manapun, sementara atribut instans biasanya didefinisikan di dalam method
__init__
. - Mengubah atribut kelas akan mempengaruhi semua contoh (kecuali contoh memiliki mengubahnya), sementara mengubah atribut instans hanya akan mempengaruhi contoh tersebut.
Ingat, ketika kamu mencoba mengakses atribut pada contoh, Python pertama-tama mencari atribut instans. Jika tidak ditemukan, maka ia mencari atribut kelas. Itu mengapa kita dapat "mengganti" atribut kelas untuk contoh tertentu dengan membuat atribut instans dengan nama yang sama.
Dan itu sudah! Kamu baru saja menyelesaikan kelas singkat tentang atribut kelas Python. Ingat, kunci untuk menguasai pemrograman adalah praktek. Jadi jangan takut untuk bereksperimen dengan konsep ini. Buat kelas kamu sendiri, mainkan atribut, dan lihat apa yang terjadi. Selamat coding!
Credits: Image by storyset