Ana içeriğe geç
Modül 7 · Ders 1 ders 4Kurstaki 25/36~14 min
Modül dersleri (1/4)

Sınıflar ve örnekler

sınıf, verilere (özniteliklere) sahip nesneler oluşturmaya yönelik bir plandır ve davranış (yöntemler). Örnek, şunlardan oluşturulan somut bir nesnedir: sınıf.

Minimal sözdizimi

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__: "yapıcı"

Bir dosya oluşturduğunuzda __init__ yöntemi otomatik olarak çağrılır. örnek (Cane("Fido", 3)). Nitelikleri başlatmak için kullanılır.

Teknik olarak bir yapıcı değildir (nesne zaten __new__), ancak başlangıç durumunu ayarladığınız yerdir.

self: ilk parametre

self yöntemin çağrıldığı örneğin referansıdır. Bu bir kural (anahtar kelime değil) ve örneğin her zaman ilk parametresidir yöntemler.

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

Örnek ve sınıf nitelikleri

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'

Çoklu yöntemler ve durum

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

Sıra sende

Egzersiz#python.m7.l1.e1
Denemeler: 0Yükleniyor…

Nitelikleri saklayan __init__(self, x, y) ile bir 'Nokta' sınıfı tanımlayın. X^2 + y^2'nin karekökünü döndüren bir "kökenden_mesafe" yöntemini ekleyin. 'p = Point(3, 4)' oluşturun ve 'p.distance_from_origin()' değerini değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

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

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m7.l1.e2
Denemeler: 0Yükleniyor…

'BankAccount'u __init__(self, bakiye=0) ile ve self.balance'ı değiştiren 'deposit(amount)', 'withdraw(amount)' yöntemleriyle tanımlayın. 'a = BankAccount(100)' oluşturun, 50 yatırın, 30 çekin. 'a.balance'ı değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

self.balance += yatırılan tutar.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m7.l1.e3
Denemeler: 0Yükleniyor…

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()`.

Düzenleyici yükleniyor…
İpucu göster

Alan(self) içindeki niteliklere erişmek için self kullanmayı unutmayın.

3 denemeden sonra çözüm mevcut