Вы можете украсить закрытые методы с помощью вызова warnings.warn
.
Я не уверен, что вы имеете в виду, говоря о людях, но позволяя модулям вызывать методы.Различие заключается в том, что одно происходит в интерактивном режиме, а другое нет?Если это так, вы можете проверить, запускается ли python из интерактивного приглашения, проверив значение sys.path[0]
.
Когда python запускает скрипт, sys.path[0]
равняется каталогу скрипта.Когда python запускает интерактивный сеанс, sys.path[0]
устанавливается в пустую строку ''
.Таким образом, чтобы предупредить людей, но не сценарии, вы можете сделать
import warnings
import functools
def warn_private(func):
if not sys.path[0]:
@functools.wraps(func)
def wrapper(self,*args,**kwargs):
warnings.warn('{f} is private'.format(f=func.__name__))
return func(self,*args,**kwargs)
return wrapper
else:
return func
class Foo(object):
@warn_private
def _bar(self):
pass