Factory deseni
- Python kursu
- Orta seviye
- Ders 26/116
- 5 dk
@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
# User sınıfına factory ekleÖrnek çözüm
# 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
@classmethod
def from_birth_year(cls, name, year):
return cls(name, 2025 - ____)
@classmethod
def from_birth_year(cls, name, year):
return cls(name, 2025 - year)
Açıklama: year parametresi yaş hesabında kullanılır.