如果从外部使用该类,我会尝试隐藏该类方法。我有一个 函数 A 执行某些操作,函数 B 使用 A 执行其他操作。例如:
class Some_Class:
def funcA():
do something
def funcB():
use funcA() to do this
我希望
funcA()
不可见。如果我使 funcA 受保护:def __funcA():
,好吧,它不能
从外部访问,但是funcB()
不会执行,因为它需要funcA()
。
此外,从外面仍然可以看到funcA()
,即使它受到保护,外面仍然可以看到
看到“它就在那里”。有办法隐藏它吗?以至于外界不知道?
为什么我想要这个只是因为funcA()
对外界来说是不必要的信息。
我能做的就是把
funcA()
带到课堂之外,但是有没有办法做到这一点并将其保留在课堂内
班级?
跟进:我还尝试用“单下划线”将其设为私有
def _funcA():
但这似乎没有做任何事情。
这个怎么样:
import functools
def expose_as(another_func_name: str):
def be_private(func):
@functools.wraps(func)
def runner(*args, **kw):
if not kw.pop('_force', None):
raise RuntimeError(f'{func.__name__} is a private function, use {another_func_name} instead!')
return func(*args, **kw)
return runner
return be_private
class MyClass:
@expose_as('func_b')
def func_a(self):
print(111)
def func_b(self):
return self.func_a(_force=1)
print(MyClass().func_b()) # 111
print(MyClass().func_a()) # raises RuntimeError