Рассмотрим этот пример кода:
Код: Выделить всё
class Context:
pass
class Foo(Generic[T]):
_context: Context
class Bar(Generic[T]):
_context: Context
def func_1(foo: Foo[str]) -> int:
# do something with _context
return NotImplemented
def func_2(foo: Foo[int], bar: Bar[int]) -> Bar[str]:
# do something with _context
return NotImplemented
Я понимаю, что простым способом было бы просто получить доступ к foo._context внутри функций и включить набираю игнорировать комментарий. Однако мне это не кажется чистым, и мне было интересно, есть ли способ сделать это на Pythonic. Аналогично этому вопросу, мне было интересно, есть ли способ запретить пользователям API создавать экземпляры открытого класса, но при этом каким-то образом создавать экземпляры внутри API. Я имею в виду, что эти атрибуты и методы класса должны быть общедоступными внутри пакета для разработчиков, но не для пользователей библиотеки.
Подробнее здесь: https://stackoverflow.com/questions/790 ... api-for-de