所以我在一个模块中有一个类,它有一些静态方法。这些静态方法中有几个只是做 crc 检查和其他事情,它们在类之外并不是很有用(我只是让它们在 java 或 C++ 中成为私有(private)静态方法)。我想知道我是否应该让它们成为全局类函数(在类之外)。
这两种方式都有什么好处吗?该类由 from module import class
导入,所以我不担心这些模块也会被引入。但是我是否应该让它们成为类方法,以便 from module import *
更安全或其他什么?
最佳答案
在函数名称前加上一个下划线是一种惯例,表明它们是私有(private)的,而且它还会防止它们被 from module import *
导入。
另一种技术是指定 __all__
在模块中列出 - 这可以在模块本身中完成(您不需要 __init__.py
文件)
__all__ = ['my_class_name']
这更像是一种白名单方法,因此您可以完全控制导入的内容,而无需使用前导下划线。
因此,除非您的方法在逻辑上属于该类,而根据您的描述,它们不属于该类,否则我会将它们保留为模块级函数,并使用这两种方法中的一种将它们设为私有(private)。
关于python - python中的静态方法与模块函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570823/