Blog sınıfı
- Python kursu
- Orta seviye
- Ders 60/116
- 6 dk
Blog sınıfıyla koleksiyon yönetimini kurarsın.
Blog sınıfı koleksiyonu yönetir
Tek bir Post örneği elindeyken onu bir listede toplamak gerekir. Blog sınıfı bu işi üstlenir: posts adında boş bir liste tutar ve add_post metodu ile yeni yazıları ekler.
posts: list = field(default_factory=list) satırı, her yeni Blog örneğine kendi boş listesini verir. default_factory=list kullanmazsan tüm örnekler aynı listeyi paylaşır; bu yaygın bir hatadır.
add_post metodu
add_post metodu tek satırlık bir iş yapar: self.posts.append(post). self sözde değişkeni, örnek kendisini ifade eder; böylece metodun içinde posts listesine erişirsin. Metodu çağırmak için blog.add_post(Post(...)) yazarsın; veri sınıfı örneği tek satırda hazır olur.
Eklemeden sonra len(blog.posts) kaç yazı olduğunu söyler. Bu sayı, ekleme işinin başarılı olduğunu doğrular.
Uygulama Blog sınıfını ve add_post metodunu yaz
Üstteki Post ve Comment sınıfları hazır. Şimdi @dataclass ile Blog sınıfını tanımla; posts: list = field(default_factory=list) alanını ekle ve def add_post(self, post): metodunu self.posts.append(post) gövdesiyle yaz. Sonra blog = Blog() ile bir blog oluştur, iki yazı ekle ve print(len(blog.posts)) ile yazı sayısını yazdır.
Başlangıç kodu
from dataclasses import dataclass, field
@dataclass
class Post:
title: str = ""
content: str = ""
author: str = ""
@dataclass
class Comment:
author: str = ""
text: str = ""
# Blog sınıfını tanımla: posts listesi ve add_post metodu
# Bir blog oluştur, iki yazı ekle, sayıyı yazdırÖrnek çözüm
from dataclasses import dataclass, field
@dataclass
class Post:
title: str = ""
content: str = ""
author: str = ""
@dataclass
class Comment:
author: str = ""
text: str = ""
@dataclass
class Blog:
posts: list = field(default_factory=list)
def add_post(self, post):
self.posts.append(post)
blog = Blog()
blog.add_post(Post(title="İlk", author="Ayşe"))
blog.add_post(Post(title="İkinci", author="Ali"))
print(len(blog.posts))Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 posts alanının varsayılanını tamamla
@dataclass
class Blog:
posts: list = field(default_factory=____)
def add_post(self, post):
self.posts.append(post)
@dataclass
class Blog:
posts: list = field(default_factory=list)
def add_post(self, post):
self.posts.append(post)
Açıklama: default_factory=list her örneğe ayrı boş liste üretir.
2 default_factory=list ne işe yarar?
- Liste türünü döndürür
- Her örneğe ayrı boş liste üretir Doğru cevap
- Listeyi sınıf genelinde paylaştırır
- Liste öğelerini otomatik doldurur
Açıklama: default_factory=list her yeni örneğe kendi boş listesini verir; sınıf genelinde paylaşılan liste hatası önlenir.
3 Blog sınıfı kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
posts |
Yazı listesi |
add_post |
Yazı ekleme metodu |
len |
Sayı verme işlevi |
self |
Örnek kendisi |