Geçerli ve devralınan sınıflardan kısıtlamaları yalnızca bir sınıf yüklendiğinde (nesne başına değil!) Birleştirmek istiyorum.Python'da sınıflar (örnek olmayanlar) nasıl başlatılır?
class Validatable:
@classmethod
def _initialize_class_not_instance(cls):
# merge constraints from derived class and base classes
pass
__class__._initialize_class_not_instance() # doesn't work
# Validatable._merge_constraints() # doesn't work too
sorun __class__
bu bağlamda yok ve Validatable
çok tanımlanmamış olmasıdır:
class Domain(Validatable):
constraints = {...}
ben her sınıf için bir kez çağrılmalıdır bir yöntem
_initialize_class_not_instance
tanımlanan Bunu yapmak için. Fakat kaçınmak istiyorum ki, API'mın kullanıcısı, başlatma yöntemini açık bir şekilde çağırmak zorundadır veya ek bir sınıf dekoratörü kullanmak zorundadır.
Sınıfı nasıl başlatacağınıza dair herhangi bir fikir var mı?
Sınıflar ** örneklerdir, genellikle "type" örnekleridir, ancak @Ignacio, "type" özel bir alt sınıfının örnekleri olabileceğine işaret etmiştir. Python3 içinde kayıt için – Duncan