0Pricing
Python Academy · Pelajaran

Atribut Instance vs Class

Bedakan data per objek dari data tingkat class yang digunakan bersama.

Atribut Instance vs Class adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Pendahuluan

Memahami perbedaan antara atribut instans dan atribut kelas membantu mencegah bug yang sulit ditemukan serta memungkinkan penggunaan keadaan bersama secara efisien.

Atribut Kelas

class Dog: legs = 4 — legs dibagikan oleh semua instans. Akses sebagai Dog.legs atau dog.legs.
class Dog:
    legs = 4
print(Dog.legs)
print(Dog().legs)

Atribut Instans

self.name = name dalam __init__ berlaku untuk setiap instans. Setiap Dog memiliki name-nya sendiri.
class Dog:
    def __init__(self, name):
        self.name = name
d1 = Dog('Rex')
d2 = Dog('Buddy')
print(d1.name, d2.name)

Urutan Pencarian Atribut

Python pertama-tama memeriksa __dict__ instans, lalu __dict__ kelas, kemudian kelas dasar. Atribut instans menutupi atribut kelas.
class C:
    x = 10
c = C()
c.x = 99  # instance shadows class attr
print(c.x)  # 99
print(C.x)  # 10

Jebakan Atribut Kelas yang Dapat Diubah

class C: items = [] — SEMUA instans berbagi daftar yang sama. Menambahkan elemen pada satu instans akan memengaruhi semuanya!
class C:
    items = []
C.items.append(1)
print(C().items)  # [1] — shared!

Mengatasi Jebakan Objek yang Dapat Diubah

Pindahkan inisialisasi ke __init__: def __init__(self): self.items = [] Setiap instans mendapatkan daftarnya sendiri.
class C:
    def __init__(self):
        self.items = []
c1 = C(); c2 = C()
c1.items.append(1)
print(c1.items, c2.items)

Pemeriksaan __dict__

obj.__dict__ adalah kamus atribut instans. Class.__dict__ adalah kamus atribut kelas.
class Dog:
    legs = 4
    def __init__(self, name): self.name = name
d = Dog('Rex')
print(d.__dict__)
print(Dog.__dict__.keys())

Metode Kelas sebagai Pabrik

@classmethod menerima cls (kelas), bukan self. Gunakan metode ini sebagai konstruktor alternatif.
class Date:
    def __init__(self, y, m, d): self.y,self.m,self.d=y,m,d
    @classmethod
    def from_string(cls, s):
        y,m,d=map(int,s.split('-'))
        return cls(y,m,d)
dt=Date.from_string('2024-01-15')
print(dt.y,dt.m,dt.d)

Metode Statis

@staticmethod tidak memiliki self atau cls. Gunakan metode ini untuk fungsi utilitas yang secara logis dikelompokkan dengan sebuah kelas, tetapi tidak memerlukan instans atau kelas.
class MathUtils:
    @staticmethod
    def add(a, b): return a + b
print(MathUtils.add(3, 4))

Melacak Instans dengan Atribut Kelas

Atribut kelas yang berfungsi sebagai penghitung dapat melacak jumlah instans yang telah dibuat.
class Widget:
    count = 0
    def __init__(self):
        Widget.count += 1
Widget(); Widget(); Widget()
print(Widget.count)

hasattr() dan vars()

hasattr(obj, 'name') memeriksa keberadaan atribut. vars(obj) setara dengan obj.__dict__.
class P:
    def __init__(self, x): self.x = x
p = P(5)
print(hasattr(p, 'x'), hasattr(p, 'z'))
print(vars(p))

Pemeriksaan Singkat

Apa yang terjadi saat Anda menambahkan elemen ke daftar atribut kelas yang dapat diubah dari sebuah instans?

Ringkasan

Atribut kelas dibagikan; atribut instans berlaku untuk setiap objek. Pencarian pada instans menutupi kelas. Inisialisasikan objek yang dapat diubah dalam __init__. Gunakan @classmethod untuk metode pabrik.

Lanjutkan

Luar biasa! Lanjutkan ke pelajaran berikutnya untuk memperdalam keterampilan Anda.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Atribut Instance vs Class” gratis?

Ya — teks lengkap “Atribut Instance vs Class” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Atribut Instance vs Class”?

Bedakan data per objek dari data tingkat class yang digunakan bersama. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Atribut Instance vs Class” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Class dan Method __init__
  2. Atribut Instance vs Class
  3. Method Instance dan self
  4. Method Ajaib: __str__ dan __repr__
← Kembali ke Python Academy