Есть ли более простой способ для запрещения наследования конкретных методов класса?
#!/usr/bin/python3
class Библиотека(object):
def азъ(self): print('азъ')
def буки(self): print('буки')
class Интерфейс(object):
protected_methods = ['буки',]
def __init__(self): self._wrapped = Библиотека()
def __getattr__(self, name):
if name in Интерфейс.protected_methods: raise AttributeError
return getattr(self._wrapped, name)
class Пустышка(Интерфейс):
азъ = property()
буки = property()
if __name__ == '__main__':
c = Пустышка()
print('protected methods:', c.protected_methods)
print('c.азъ:', hasattr(c, 'азъ'))
print('c.буки:', hasattr(c, 'буки'))
print('c.азъ():', end = ' ')
c.азъ()
print('c.буки():', end = ' ')
c.буки()
По-моему, в Turbo Pascal это делалось просто, указанием директивы private: