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!

Python - Class Attributes

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:

  1. Melalui kelas itu sendiri: Dog.species
  2. Melalui contoh mana saja dari kelas: fluffy.species atau buddy.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:

  1. Menyimpan konstan yang harus sama untuk semua contoh dari kelas.
  2. Melacak data di seluruh contoh dari kelas (seperti contoh kita Cat.count).
  3. 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:

  1. Atribut kelas dibagi oleh semua contoh, sementara atribut instans adalah unik untuk setiap contoh.
  2. Atribut kelas didefinisikan di dalam kelas tetapi di luar method manapun, sementara atribut instans biasanya didefinisikan di dalam method __init__.
  3. 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