Твоя задача, однозначно решается по другому и вряд ли твой или мой код имеет хоть какой то практический смысл.
Когда ты наследуешься, то ты наследуешь в том числе атрибуты класса. То есть вот это условие у тебя не выполняется
if not hasattr(cls, 'Команды'): просто return смысла не имеет ты там должен делать что то с классом который наследовался от твоего. Дальше без комментариев, смысла в твоих действиях нет.
Вопрос стоит так, возможно ли запретить наследование по определенному атрибуту, для дочернего класса. Ответ нет нельзя. В целом в питоне можно обойти практически любые запреты.
class Система:
"""Группа команд."""
Команды = {}
def __init__(self, *args, **kwargs):
pass
def пользовательИмеетДоступ(self, bot, event):
return True
def __init_subclass__(cls, *args, **kwargs):
super().__init_subclass__(**kwargs)
if any("Команды" in base.__dict__ for base in cls.__mro__[1:]) and "Команды" not in cls.__dict__:
setattr(cls, "Команды", None)
class Another(Система):
# Команды = {"Команда 1": 'тест'}
pass
print(getattr(Another, 'Команды'))
Вот так мы получим следующее поведение, твоя строка будет возвращать None, как ты и хотел. Если же ты переопределишь, в дочернем классе, то команда вернет его значение.