我有一个基类,从中派生多个子类。
每个子类都定义了类常量,我希望对它们实施某些限制。例如:
class Base(object):
# define these in your sub-class, and make sure (NOM % DENOM == 0)
NOMINATOR = None
DENOMINATOR = None
class Subclass_good(Base):
NOMINATOR = 6
DENOMINATOR = 3
class Subclass_bad(Base):
NOMINATOR = 7
DENOMINATOR = 5
我希望能够执行规则(NOM % DENOM == 0)。
我目前使用类装饰器执行此操作:
def nom_denom_validator(cls):
assert(cls.NOMINATOR % cls.DENOMINATOR == 0)
return cls
# and decorate each subclass, e.g.:
@nom_denom_validator
class Subclass_another(Base):
NOMINATOR = 9
DENOMINATOR = 12
但我不喜欢我需要装饰每个子类的事实(我有很多)。我很感兴趣这是否可以通过直接对 Base 类进行一些操作来完成。
有什么建议吗?