Python类静态方法 - python

我想创建一种实用程序类,它仅包含可通过名称类前缀调用的静态方法。看起来我做错了:)

这是我的小课:

class FileUtility():

    @staticmethod
    def GetFileSize(self, fullName):
        fileSize = os.path.getsize(fullName)
        return fileSize

    @staticmethod
    def GetFilePath(self, fullName):
        filePath = os.path.abspath(fullName)
        return filePath

现在,我的“主要”方法是:

from FileUtility import *
def main():
        path = 'C:\config_file_list.txt'
        dir = FileUtility.GetFilePath(path)
        print dir

我收到一个错误:unbound method GetFilePath() must be called with FileUtility instance as first argument (got str instance instead)

这里有几个问题:

  • 我在做什么错?静态方法是否可以通过类名调用?
  • 我真的需要一个实用程序类,还是有其他方法可以在Python中实现相同功能?
  • 如果我尝试更改main中的代码,我会得到:TypeError: GetFilePath() takes exactly 1 argument (2 given)
  • 新的main:

    from FileUtility import *
    def main():
        objFile = FileUtility()
        path = 'H:\config_file_list.txt'
        dir = objFile.GetFilePath(path)
        print dir
    

    参考方案

    之所以会出现错误,是因为您在每个函数中都使用了self参数。它们是静态的,您不需要它。

    但是,执行此操作的“pythonic”方法不是让类具有静态方法,而是使它们在模块中成为自由函数。

    #fileutility.py:
    
    def get_file_size(fullName):
        fileSize = os.path.getsize(fullName)
        return fileSize
    
    
    def get_file_path(fullName):
        filePath = os.path.abspath(fullName)
        return filePath
    

    现在,在您的其他python文件中(假设fileutility.py位于同一目录或PYTHONPATH上)

    import fileutility
    
    fileutility.get_file_size("myfile.txt")
    fileutility.get_file_path("that.txt")
    

    它没有特别提到静态方法,但是如果您来自另一种语言PEP 8,则python样式指南非常适合阅读和介绍python程序员的想法。

    Python GPU资源利用 - python

    我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

    Python:图像处理可产生皱纹纸效果 - python

    也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…

    在Python中避免相对导入和sys.path - python

    当前,我有一个Python项目正在处理这样的目录结构:tests/ corpus/ __init__.py tests.py monkey/ corpus/ corpus.py setup.py 我想将tests.py(在测试/语料库中)导入corpus.py(在猴子/语料库中)。我已经看到许多涉及使用相对导入和sys.path的解决方案,但是我也看到人们直…

    Python uuid4,如何限制唯一字符的长度 - python

    在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

    Python sqlite3数据库已锁定 - python

    我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…