
Register Classes in Python
Alt sınıfları otomatik kayıt altına almanın üç yolu: metaclass __new__, __init_subclass__ ve class decorator. Hangi durum için hangisi daha uygun?

Alt sınıfları otomatik kayıt altına almanın üç yolu: metaclass __new__, __init_subclass__ ve class decorator. Hangi durum için hangisi daha uygun?

Metaclass ile dataclass benzeri bir yapı: type annotation'lardan otomatik __slots__ türetme ve __call__'da çalışma zamanı tip doğrulama.

Metaclass'ın __prepare__ metoduyla sınıf gövdesindeki her atamayı otomatik olarak kayıt altına alın — özelleştirilmiş namespace'in gücünü keşfedin.

defineif kütüphanesinin implementasyonu: __prepare__ ile özelleştirilmiş namespace, sınıf oluşturulurken boolean koşula göre metodları sessizce tanımlar ya da atlar.

__slots__ belleği optimize eder ama her sınıfa elle eklemek zahmetlidir. Metaclass ve co_names kullanarak __init__ parametrelerinden otomatik __slots__ üreten bir yaklaşımı anlattım.

class Example: ... yazmak ile type('Example', (), {...}) çağırmak tamamen aynı sonucu verir. Python class anahtar kelimesini sahne arkasında type() çağrısına dönüştürür.