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
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.
fido.abbaia()
# equivalente a Cane.abbaia(fido)
# Python passa fido come self automaticamenteAtribut instance vs kelas
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
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 # 0Giliranmu
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()`.
Tunjukkan petunjuk
matematika.sqrt(self.x ** 2 + self.y ** 2)
Solusi tersedia setelah 3 upaya
Tinjau latihan
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`.
Tunjukkan petunjuk
self.balance += jumlah deposit.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
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()`.
Tunjukkan petunjuk
Ingatlah untuk menggunakan self untuk mengakses atribut di dalam area (self).
Solusi tersedia setelah 3 upaya