По сути, я хочу, чтобы подклассы абстрактных базовых классов не только реализовывали определенные атрибуты или методы, но также могли предъявлять требования к ним, такие как типы данных или допустимые значения.
Например, допустим, я хочу, чтобы классы имели name
и что name
начинается с буквы 'a':
from abc import ABC, abstractproperty
class Base(ABC):
@abstractproperty
def name(self):
assert self.name[0] == 'a' # or similar; help needed here
class Derived1(Base):
name = 'albert' # I want this class definition to work
class Derived2(Base):
name = 'john' # I want this class definition to fail the 'a' assertion
Где / как бы я утверждал это в базовом классе?