我只想在一个类加载(而不是每个对象!)时合并来自当前类和继承类的约束。如何在Python中初始化类(不是实例)?
class Domain(Validatable):
constraints = {...}
为此,我定义的方法_initialize_class_not_instance
应一次为每个类被称为:
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的用户必须明确地调用初始化方法,或者必须使用额外的类装饰器。
任何想法如何初始化类?
请注意,类**是**实例,通常它们是'type'的实例,但是@Ignacio指出它们可以是'type'自定义子类的实例。 – Duncan 2011-05-31 08:01:56