Вы можете использовать точно такой же шаблон в Python.Вы, кажется, беспокоитесь о том, является ли необходимость делать my_object.get_foo()
все время Pythonic.К счастью, Python предоставляет вам хороший инструмент для работы здесь в виде properties :
class my_class(object):
@property
def foo(self):
# calculate if needed
return self._foo
Это позволяет вам иметь то, что используется в качестве атрибута,даже если это реализовано как функция.т. е. пользователи будут делать my_object.foo
, и не заботятся о том, чтобы запускать их за кулисами.
Еще одна вещь, на которую следует обратить внимание, это то, что соглашение Python гласит, что частные атрибуты пишутся _foo
, а не mFoo
.