我有一个简单的Python类,带有构造函数和方法。我希望只能从构造函数中调用该方法,而不能在类定义之外调用。有什么办法可以在Python中做到这一点?我知道我可以通过在构造函数中定义一个函数来做到这一点,但是我不想这样做。
class Test:
def __init__(self):
self.do_something # Should work
def do_something(self):
# do something
test = Test()
test.do_something() # Should not work (Should not be a recognized method)
答案 0 :(得分:2)
您需要在do_something(self)前面加上双下划线。代码如下。
class Test:
def __init__(self):
self.__do_something # Should work
def __do_something(self):
# do something
test = Test()
test.__do_something()
答案 1 :(得分:2)
是的,您可以使用双下划线前缀标记方法:
class Test:
def __init__(self):
self.__do_something() # This works
def __do_something(self):
print('something')
test = Test()
test.__do_something() # This does not work
输出:
something
Traceback (most recent call last):
File "something.py", line 11, in <module>
test.__do_something() # This does not work
AttributeError: 'Test' object has no attribute '__do_something'
答案 2 :(得分:1)
要使其在python中成为“私有”,只需在其名称前加上__。不过,它并不是真正的私人。只是名字略有不同。您仍然可以通过在类中的对象上运行dir来访问它,一旦知道名称,就可以使用它在类外调用它。