class Foo: page_name = None author = None def __init_subclass__(cls, **kwargs): for required in ('page_name', 'author',): if not getattr(cls, required): raise TypeError(f"Can't instantiate abstract class {cls.__name__} without {required} attribute defined") return super().__init_subclass__(**kwargs) class Bar(Foo): page_name = 'New Page' author = 'eric'