python包内怎么定义私有变量和方法?

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

回到顶部