type()
- Python kursu
- Uzman
- Ders 1/47
- 5 dk
type() ile dinamik sınıf oluşturmayı öğrenirsin.
type() ile dinamik sınıf
type() tek argümanla bir nesnenin türünü verir. Üç argümanla ise yeni sınıf oluşturur: type(isim, tabanlar, sözlük).
isim sınıf adı, tabanlar üst sınıfların demeti, sözlük özellik ve yöntemlerin haritasıdır. Sonuç, class ile yazılmış gibi çalışır. Böylece yapıyı veriden üretirsin; örneğin bir ayar dosyasından sınıflar türetebilirsin.
Sözlük argümanı
Üçüncü argüman olan sözlük, sınıfın ad alanını belirler. "x": 0 gibi girdiler örnek özellikleri, "show": lambda self: ... gibi girdiler yöntemleri tanımlar.
Yöntemlerin ilk parametresi self olur. Sözlüğe __init__ de ekleyebilirsin; böylece dinamik sınıfın kurucusu olur. Bu esneklik, class deyimiyle yazılabilecek her şeyi çalışma anında kurmanı sağlar.
Uygulama Point sınıfını type() ile yaz
Point sınıfını type() ile oluştur. İkinci argüman boş demet (), üçüncü argüman sözlük olsun. Sözlükte x ve y özellikleri (değer 0) ve show yöntemi olsun. show şunu döndürsün: f"{self.x},{self.y}". Örnek oluştur, x=3 ve y=4 ata, show() çıktısını yazdır.
Başlangıç kodu
# Point sınıfını dinamik olarak oluştur
# x, y özellikleri ve show yöntemi ekle
# örneği yazdırÖrnek çözüm
# Point sınıfını dinamik olarak oluştur
Point = type("Point", (), {
"x": 0,
"y": 0,
"show": lambda self: f"{self.x},{self.y}",
})
p = Point()
p.x = 3
p.y = 4
print(p.show())Beklenen çıktı
3,4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 type("X", (), {}) ne döndürür?
cls = type("X", (), {})- Bir hata fırlatır
- Boş bir nesne
- Yeni bir sınıf nesnesi Doğru cevap
- type nesnesinin kendisi
Açıklama: type üç argümanla yeni bir sınıf oluşturur ve döndürür.
2 type() çağrısını tamamla
Point = type("Point", (), {____, "y": 0})
Point = type("Point", (), {"x": 0, "y": 0})
Açıklama: Sözlükte anahtar-değer çifti "x": 0 olur.
3 type() kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
type |
Sınıf oluşturur |
isim |
Sınıf adı |
tabanlar |
Üst sınıf demeti |
sözlük |
Özellik haritası |