複数のサブクラスを派生させる基本クラスがあります。
各サブクラスはクラス定数を定義しており、それらに特定の制限を適用したいと考えています。例えば:
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 クラスを直接操作することでこれを実行できるかどうかに興味があります。
何かアドバイス?