Python ile nesne yönelimli programlama
Sınıf, miras, özel yöntem ve dekoratörleri kullanarak düzenli, yeniden kullanılabilir Python kodu yazarsın.
Seviye 201 · 16 ders · 15 pratik lab
Dersler
Sınıf temelleri
- Neden sınıf? Veriyi ve davranışı bir araya getirmek: Dağınık değişkenler yerine veriyle işlemi tek yapıda toplamanın faydasını görür ve ilk sınıfını yazarsın.
- Nesne oluşturmak: __init__ ve öznitelikler: Kurucu yöntemle nesne üretir, örnek ve sınıf özniteliklerinin farkını bilerek doğru yerde kullanırsın.
- Yöntemler: örnek, sınıf ve statik yöntem: self ile çalışan yöntemleri, @classmethod ve @staticmethod ile ne zaman ayrılman gerektiğini örneklerle öğrenirsin.
- Kapsülleme: property ile doğrulamalı öznitelikler: Öznitelik değiştirilirken değeri property ile denetler, geçersiz veriyi daha nesne içindeyken reddedersin.
- Kısa görev: eksiye düşmeyen banka hesabı sınıfı
Miras ve çok biçimlilik
- Miras ve super(): Bir sınıfı başka sınıftan türetir, ortak kodu tek yerde tutar ve üst sınıf yöntemini super() ile çağırırsın.
- Çok biçimlilik ve bileşim: miras mı, nesne içinde nesne mi?: Aynı arayüzü farklı sınıflarla kullanır, mirasın yetersiz kaldığı yerde bileşimi seçersin.
- Soyut sınıflar: abc ile sözleşme tanımlamak: Alt sınıfların mutlaka yazması gereken yöntemleri abc ile zorunlu kılarak tutarlı bir yapı kurarsın.
- Ördek tiplemesi ve Protocol
- Kısa görev: e-posta ve dosya bildiricisi için ortak arayüz
Özel yöntemler ve araçlar
- Özel yöntemler: __str__, __repr__, __eq__, __len__: Nesnelerinin yazdırılma, karşılaştırılma ve uzunluk gibi davranışlarını Python’un özel yöntemleriyle belirlersin.
- dataclass ile veri sınıfları: Sadece veri taşıyan sınıfları dataclass ile kısa yazar, varsayılan değer ve değişmez nesne seçeneklerini kullanırsın.
- Enum ile sabit değer kümeleri
- Dekoratörler: işlevi sarmalayarak davranış eklemek: Bir işlevin kodunu değiştirmeden ona zaman ölçme veya günlükleme ekleyen kendi dekoratörünü yazarsın.
- Kısa görev: süre ölçen ve yeniden deneyen dekoratör
Bitirme
- Bitirme görevi: günlük olayı sınıflarıyla küçük bir olay işleyici: Farklı günlük olay türlerini sınıf hiyerarşisiyle modelleyip tek bir işleyiciyle sınıflandıran program yazarsın.
Pratik lablar
- Müşteriye adres nesnesi yerleştirmek: Adres alanları sınıfa dağılmış Müşteri sınıfını ayrı bir Adres nesnesi barındıracak şekilde düzenle ve etiket çıktısının aynı kaldığını göster.
- Sıcaklık sınıfına property eklemek: Celsius değerini saklayan, Fahrenheit'ı property ile hesaplayan ve mutlak sıfırın altındaki değerleri reddeden sınıfı yaz.
- Metinden nesne üreten classmethod yazmak: 'ad;e-posta;rol' satırından personel nesnesi üreten from_line classmethod'unu ve e-postayı denetleyen staticmethod'u yaz.
- Stok kalemini tutarlı tutmak: Lavanta Otel'in minibar stoklarını tutan sınıfta miktarın eksiye düşmesini ve fiyatın dışarıdan bozulmasını engelle; testler sınıf kurallarını dener.
- Paylaşılan sınıf özniteliği hatasını düzeltmek: Tüm sepet nesnelerinin aynı ürün listesini paylaştığı hatayı bul, listeyi örnek özniteliğine taşı ve testleri geçir.
- Alt sınıfta super() ile kurulum yapmak: Araç sınıfından türeyen kamyon ve motosiklet sınıflarını super() ile kur ve her birinin taşıma kapasitesini kendi kuralıyla hesaplat.
- Ödeme yöntemleri için soyut sınıf tanımlamak: abc ile bir ödeme yöntemi sözleşmesi tanımla, kart ve havale sınıflarını uygula; testler eksik yöntemli sınıfın örneklenemediğini doğrular.
- Protocol ile depolama arayüzü kurmak: Bellek ve dosya tabanlı iki depolama sınıfını ortak bir Protocol'e uydur ve servisi miras kullanmadan ikisiyle de çalışır hale getir.
- Mirası bileşimle değiştirmek: list sınıfından türetildiği için beklenmedik davranan kuyruk sınıfını bileşimle yeniden yaz; dışa açık davranış testleri değişmeden geçsin.
- Para sınıfına özel yöntemler eklemek: Tutar ve para birimi taşıyan sınıfa __repr__, __eq__ ve __add__ ekle; farklı para birimlerini toplamayı reddet.
- dataclass ile sıralanabilir kayıt yazmak: Destek talebini önceliğe ve tarihe göre sıralanabilen, değiştirilemez bir dataclass olarak modelle ve sıralama testlerini geçir.
- Sipariş durumlarını Enum ile sınırlamak: Sipariş durumlarını Enum ile tanımlayıp yalnızca izin verilen geçişlere olanak tanıyan yöntemi yaz; geçersiz geçişler testlerde hata vermeli.
- Çağrıları kaydeden dekoratör yazmak: Fonksiyon adını ve argümanlarını kaydeden, functools.wraps ile özgün adı ve belge dizgisini koruyan bir dekoratör yaz.
- Yetki denetleyen dekoratör yazmak: Kullanıcının rolü yetmiyorsa fonksiyonu hiç çalıştırmadan PermissionError fırlatan @requires_role dekoratörünü yaz.
- Süreli önbellek dekoratörü yazmak: Sonuçları argümanlara göre belirli bir süre saklayan dekoratörü yaz; testler sahte saatle sürenin dolmasını ve farklı argümanları denetler.
Kurs hakkında
Sınıf, miras, özel yöntem ve dekoratörleri kullanarak düzenli, yeniden kullanılabilir Python kodu yazarsın.
Ne öğreneceksin
- Sınıf temelleri
- Miras ve çok biçimlilik
- Özel yöntemler ve araçlar
- Bitirme
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.