class ImageLoader:
TileTable = __loadTileTable('image path', some other variable)
@staticmethod
def _loadTileTable(arg1, arg2):
blah blah
然而,在编译时我会得到:NameError: name '_loadTileTable' is not defined
如果我将第二行替换为TileTable = ImageLoader.__loadTileTable('image path', some other variable)
,那么我会得到NameError: name 'ImageLoader' is not defined
由于我从C#转到Python,使用静态类和静态方法是我用来实现这个的方法。然而,我也很想知道在Python中如何做到这一点(即调用仅通过它们的功能进行分组的静态库函数)。
更新: 阅读了两个答案后,我认为我尝试做的可能不正确。 我该怎么样才能实现ImageLoader,以便我可以这样做:
假设tile table返回一个数组
module1.py
aTile = ImageLoader.TileTable[1]
module2.py
anotherTile = ImageLoader.TileTable[2]
理想情况下,我只需一次填充TileTable。
更新:
感谢所有答案,我在Python模块文档中找到了上一次回答填充TileTable的方案。
"一个模块可以包含可执行语句以及函数定义。这些语句旨在初始化模块。它们仅在第一次导入模块时执行。"
至于静态类,我将放弃使用类,只制作一个模块级变量。
staticmethod
时,通常意味着你正在做一些错误的事情。如果你既不需要实例变量也不需要类变量(静态字段),只需使用模块级函数即可。 - user395760dict.fromkeys()
为例,这些东西确实有合法的用例。 - jathanism