CodeBlanks Logo Icon CodeBlanks

Yorum ekleme

add_comment ile yorumsal akışı yazarsın.

Yorumları Post'a bağla

İlk derste Comment sınıfını tanımlamıştık ama yazıya bağlamamıştık. Şimdi Post sınıfına comments: list = field(default_factory=list) alanını ekleriz. Böylece her yazının kendi yorum listesi olur.

Sonra Post sınıfının içine add_comment metodunu yazarız: self.comments.append(comment). Bir yorum eklemek için p.add_comment(Comment(author="Ali", text="Güzel")) yazmak yeterli. len(p.comments) ile yorum sayısını alırsın.

Metodun yeri önemli

add_comment metodunu Post sınıfının içine yazarsın çünkü yorum o yazıya bağlıdır. Blog sınıfına koymak yanlış olur; blog birçok yazı tutar ve hangi yazıya yorum ekleneceğini bilemezsin.

Metodun gövdesinde self.comments.append(comment) çağrısı yapılır. self o anki yazı örneğidir; comments ise onun kendi listesidir. Bu ayrım sayesinde her yazının yorumları birbirine karışmaz.

Uygulama Post sınıfına yorum ekle

Üstteki Post sınıfına comments: list = field(default_factory=list) alanını ekle ve def add_comment(self, comment): metodunu self.comments.append(comment) gövdesiyle yaz. Sonra p = Post(title="İlk", author="Ayşe") ile bir yazı oluştur, iki yorum ekle ve print(len(p.comments)) ile yorum sayısını yazdır.

Başlangıç kodu

main.py
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)

# Post sınıfına comments alanı ve add_comment metodunu ekle

# Bir yazı oluştur, iki yorum ekle, sayıyı yazdır

Örnek çözüm

main.py
from dataclasses import dataclass, field

@dataclass
class Post:
    title: str = ""
    content: str = ""
    author: str = ""
    comments: list = field(default_factory=list)

    def add_comment(self, comment):
        self.comments.append(comment)

@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)

p = Post(title="İlk", author="Ayşe")
p.add_comment(Comment(author="Ali", text="Güzel olmuş"))
p.add_comment(Comment(author="Veli", text="Teşekkürler"))
print(len(p.comments))

Beklenen çıktı

2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Yorum ekleme kavramlarını eşleştir

Kavram Anlamı
comments Yazının yorum listesi
add_comment Yorum ekleme metodu
append Sona ekleme
len Sayı verme işlevi

2 add_comment metodu hangi sınıfa eklenir?

  • Blog sınıfına
  • Comment sınıfına
  • Post sınıfına Doğru cevap
  • Modül düzeyinde bırakılır

Açıklama: Yorum bir yazıya bağlı olduğu için add_comment Post sınıfında yer alır.

3 add_comment metodunun parametresi

Soru
    def add_comment(self, ____):
        self.comments.append(comment)
Cevap
    def add_comment(self, comment):
        self.comments.append(comment)

Açıklama: Tek bir yorum nesnesi parametre olarak alınır.

Orta seviye bölümündeki tüm dersler