Lompati ke konten utama
Modul 7 · Pelajaran 1 dari 425/36 dalam kursus~14 min
Pelajaran modul (1/4)

Kelas dan instance

Kelas adalah cetak biru untuk membuat objek yang memiliki data (atribut) dan perilaku (metode). Contoh adalah objek konkret yang dibuat kelas.

Sintaks minimal

Python
class Cane:
    def __init__(self, nome, eta):
        self.nome = nome
        self.eta = eta

    def abbaia(self):
        return f"{self.nome} dice WOOF!"

# creazione di istanze
fido = Cane("Fido", 3)
luna = Cane("Luna", 5)

fido.nome       # 'Fido'
fido.abbaia()   # 'Fido dice WOOF!'

__init__: "konstruktor"

Metode __init__ dipanggil secara otomatis saat Anda membuat contoh (Cane("Fido", 3)). Ini digunakan untuk menginisialisasi atribut.

Secara teknis ini bukan konstruktor (objek sudah dibuat oleh __new__), tetapi ini adalah tempat Anda menyetel status awal.

self: parameter pertama

self adalah referensi ke instance dimana metode tersebut dipanggil. Ini adalah sebuah konvensi (bukan kata kunci) dan selalu menjadi parameter pertama contohnya metode.

Python
fido.abbaia()
# equivalente a Cane.abbaia(fido)
# Python passa fido come self automaticamente

Atribut instance vs kelas

Python
class Cane:
    specie = "Canis familiaris"   # attributo di CLASSE (condiviso)

    def __init__(self, nome):
        self.nome = nome           # attributo di ISTANZA (per ognuno)

fido = Cane("Fido")
luna = Cane("Luna")

fido.nome       # 'Fido'        (istanza)
luna.nome       # 'Luna'        (istanza)
fido.specie     # 'Canis familiaris'  (cercato sulla classe)
Cane.specie     # 'Canis familiaris'

Berbagai metode dan status

Python
class Contatore:
    def __init__(self, inizio=0):
        self.valore = inizio

    def incrementa(self, di=1):
        self.valore += di

    def reset(self):
        self.valore = 0

c = Contatore()
c.incrementa()
c.incrementa(di=5)
c.valore       # 6
c.reset()
c.valore       # 0

Giliranmu

Latihan#python.m7.l1.e1
Upaya: 0Memuat…

Tentukan kelas `Titik` dengan __init__(self, x, y) yang menyimpan atribut. Tambahkan metode `distance_from_origin` yang mengembalikan akar kuadrat dari x^2 + y^2. Buat `p = Point(3, 4)` dan evaluasi `p.distance_from_origin()`.

Memuat editor…
Tunjukkan petunjuk

matematika.sqrt(self.x ** 2 + self.y ** 2)

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#python.m7.l1.e2
Upaya: 0Memuat…

Tentukan `BankAccount` dengan __init__(self, balance=0) dan metode `deposit(amount)`, `withdraw(amount)` yang mengubah self.balance. Buat `a = Rekening Bank(100)`, setor 50, tarik 30. Evaluasi `a.saldo`.

Memuat editor…
Tunjukkan petunjuk

self.balance += jumlah deposit.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#python.m7.l1.e3
Upaya: 0Memuat…

Define a class `Rectangle` with a constructor `__init__(self, width, height)` to set width and height, and a method `area(self)` that returns the product of width and height. Instantiate a rectangle with width `4` and height `5` storing it in `rect`, and evaluate `rect.area()`.

Memuat editor…
Tunjukkan petunjuk

Ingatlah untuk menggunakan self untuk mengakses atribut di dalam area (self).

Solusi tersedia setelah 3 upaya