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'