Использовать пользовательский метакласс:
class RequireProperty(type):
_required = ['define_me']
def __new__(cls, name, bases, attributes):
new_class = super().__new__(cls, name, bases, attributes)
if not all(required_attribute in attributes for required_attribute in cls._required):
raise TypeError
else:
return new_class
Если вы не определите атрибут:
class DidntDefine(metaclass=RequireProperty):
pass
DidntDefine()
Выход:
TypeError: You must define all of ['define_me'].
Если вы делаете:
class DidDefine(metaclass=RequireProperty):
define_me = None
DidDefine()
Выход:
<__main__.DidDefine at 0x2bcec632198>