CodeBlanks Logo Icon CodeBlanks

Factory deseni

@classmethod ile factory desenini öğrenirsin.

Factory deseni

Factory deseni, bir sınıfın örneğini farklı bir girişten oluşturmayı sağlar. Genellikle bir @classmethod, yeni bir örnek döndürür; adı from_... ile başlar.

Örnek: class User:\n @classmethod\n def from_birth_year(cls, name, year):\n return cls(name, 2025 - year). Bu metot, doğum yılından yaş hesaplayıp örneği kurar. Çağıran yalnızca name ve year verir; yaş hesabı metot içinde yapılır. Bu, çağrıyı sadeleştirir.

from_ ad geleneği

Factory metotlarına genellikle from_ önekiyle ad verilir: from_list, from_string, from_dict. Bu, çağıranın alternatif kurucu olduğunu hemen anlamasına yardımcı olur.

Örnek: Counter.from_list([1, 2, 3]) bir listeden örneği kurar. User.from_birth_year("Ayşe", 1990) bir doğum yılından örneği kurar. Okunabilirlik bu şekilde artar; çağrı ne yaptığını söyler.

Uygulama User'a factory ekle

User sınıfını tanımla. def __init__(self, name, age): ve gövdede self.name = name ve self.age = age yaz. @classmethod ve def from_birth_year(cls, name, birth_year): ekle; gövdede return cls(name, 2025 - birth_year) yaz. Sonra u = User.from_birth_year("Ayşe", 1990) ile örnek oluştur ve print(u.age) yaz.

Başlangıç kodu

main.py
# User sınıfına factory ekle

Örnek çözüm

main.py
# User sınıfına factory ekle
class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    @classmethod
    def from_birth_year(cls, name, birth_year):
        return cls(name, 2025 - birth_year)

u = User.from_birth_year("Ayşe", 1990)
print(u.age)

Beklenen çıktı

35

Soru ve cevaplar

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

1 Factory kavramlarını eşle

Kavram Anlamı
from_birth_year Factory metot
cls(name, ...) Yeni örnek
2025 - year Yaş hesabı

2 Bir factory metodu ne döndürür?

  • Sınıf adı
  • Bir örnek Doğru cevap
  • Bir metot
  • None

Açıklama: Factory metodu yeni bir sınıf örneği döndürür.

3 Factory return'u tamamla

Soru
    @classmethod
    def from_birth_year(cls, name, year):
        return cls(name, 2025 - ____)
Cevap
    @classmethod
    def from_birth_year(cls, name, year):
        return cls(name, 2025 - year)

Açıklama: year parametresi yaş hesabında kullanılır.

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