【发布时间】:2011-09-05 05:41:38
【问题描述】:
我只想在加载类后合并来自当前类和继承类的约束(而不是每个对象!)。
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的自定义子类的实例。
标签: python oop inheritance class-method