Этот вопрос уже имеет ответ здесь:
Существует ли способ сделать функцию класса unoverriddable? что-то как Java final
ключевое слово. т.е., любой переопределяющий класс не может переопределить тот метод.
Проблема в том, что вы пытаетесь писать на Python, используя философию Java. Некоторые вещи переносятся, но не все. В Python вы можете делать следующее, и это прекрасно, но полностью противоречит тому, как Java думает об объектах.
class Thing(object):
x = 1
something = Thing()
something.y = something.x
Если вы действительно этого хотите, вы можете попробовать код , размещенный здесь . Но, как видите, там много кода, чтобы заставить его делать то, что вы хотите. Также следует отметить, что даже человек, разместивший код, говорит, что его можно передать, используя объект __ dict __
или .__ setattr __
.
Да, есть, не делайте этого.
Я должен добавить к этому после голосования против. Некоторые считают, что такие механизмы защиты идут вразрез с идеей Python, что «мы все здесь взрослые по согласию». От кого вы хотите защитить такие функции? А если одного комментария недостаточно, зачем нужно что-то «посильнее»?
Я бы задокументировал ваши ожидания и ожидал, что другие программисты будут действовать ответственно.
Вы можете добавить комментарий о следующем:
# We'll fire you if you override this method.
Удивительно, насколько хорошо низкотехнологичные решения, подобные этой, работают на практике.