python包内怎么定义私有变量和方法?
包内调用自己的方法,但不暴露出去,只是做基础逻辑的封装
回答:
We are all consenting adults.
回答:
Python 包中你无法控制你不暴露什么,只能控制你想暴露什么,具体参考 https://docs.python.org/zh-cn/3/tutorial/modules.html?highlig...。
但说到底这也只是约定,因为即使你这么写了,依然不影响调用方使用未声明在 __all__
列表中的方法。把你想暴露的方法声明在 __all__
数组里,更像是在表明,我做为包的开发者,我只对这些方法的稳定性和可用性提供保证,调用方擅自使用未声明在 __all__
列表中的方法而造成的后果自负。
主打的就是:大家都是成年人了,应当知道自己在做什么。
回答:
双下划线。
# -*- coding: utf-8 -*-class MyClass:
def __init__(self):
self.__private_var = 10
def __private_method(self):
print("This is a private method.")
def public_method(self):
print(self.__private_var)
obj = MyClass()
# print(obj.__private_var) # 报错: AttributeError: 'MyClass' object has no attribute '__private_var'
# obj.__private_method() # 报错: AttributeError: 'MyClass' object has no attribute '__private_method'
obj.public_method()
回答:
使用双下划线(__variable
)命名函数或者变量。
回答:
Python本质上没有绝对的私有约束,双下划线开头其实也只是Python自动帮你改了个名字,你通过_类名__属性也能访问到
以上是 python包内怎么定义私有变量和方法? 的全部内容, 来源链接: utcz.com/p/939058.html