from abc import ABC, abstractmethod class Foo(ABC): @classmethod @property @abstractmethod def x(cls): print("This is executed when subclassing Foo") print(cls) return None class Bar(Foo): def __init__(self): print("This class can be instantiated, even though it does not implement x") Bar()