Что делают другие люди
class A:
def do_run( self ):
"""Must be overridden."""
raise NotImplementedError
def run( self, *args, **kw ):
"""Must not be overridden.
You were warned.
"""
print "PRE"
return_value = self.do_run(*args, **kw)
print "POST"
return return_value
class B(A):
def do_run(self):
print "Run B"
return True
Этого обычно достаточно.
Если вы хотите беспокоиться о том, что кто-то "сломает" это, остановитесь сейчас.Не тратьте время на беспокойство.
Это Python.Мы все здесь взрослые.Все злые социопаты взломают весь ваш код, скопировав его, изменив, а затем разбив.Независимо от того, что вы делаете, они просто скопируют ваш код и изменят его, чтобы сломать умные биты.
Все остальные будут читать ваш комментарий и придерживаться ваших правил.Если они захотят использовать ваш модуль / пакет / инфраструктуру, они будут сотрудничать.