クラスがロードされたときにのみ、現在のクラスと継承されたクラスの制約をマージしたい(オブジェクトごとではありません!)。
class Domain(Validatable):
constraints = {...}
これを行う_initialize_class_not_instance
ために、クラスごとに1回呼び出す必要があるメソッドを定義しました。
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
問題は__class__
、このコンテキストにValidatable
は存在せず、定義もされていないことです。ただし、APIのユーザーがinitializeメソッドを明示的に呼び出すか、追加のクラスデコレータを使用する必要があることは避けたいと思います。
クラスを初期化する方法はありますか?