Deseo crear un tipo de clase de utilidad que contenga solo métodos estáticos que se puedan llamar con el prefijo de clase de nombre. Parece que estoy haciendo algo mal :)Métodos estáticos de la clase Python
Aquí está mi pequeña clase:
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
Ahora mi método "principal":
from FileUtility import *
def main():
path = 'C:\config_file_list.txt'
dir = FileUtility.GetFilePath(path)
print dir
y me dio un error: unbound method GetFilePath() must be called with FileUtility instance as first argument (got str instance instead)
.
A tienen algunas preguntas aquí:
- ¿qué estoy haciendo mal? ¿No debería llamarse el método estático por nombre de clase?
- ¿Realmente necesito una clase de utilidad, o hay otras formas de lograr lo mismo en Python?
- Si trato de cambiar el código en el principal que estoy recibiendo:
TypeError: GetFilePath() takes exactly 1 argument (2 given)
El nuevo main
:
from FileUtility import *
def main():
objFile = FileUtility()
path = 'H:\config_file_list.txt'
dir = objFile.GetFilePath(path)
print dir
Hola Collin, gracias por la respuesta, lo hice como usted sugiere, archivo pitón llano con lista de métodos y en el principal: dir = FileUtility.GetFilePath (ruta) Obtuve un error: el método independiente GetFilePath() debe invocarse con la instancia FileUtility como primer argumento (instancia get str en su lugar) – ilyaw77
Lo siento, dejé a un auto extraviado allí en la primera ejecución. ¿Todavía tienes una clase FileUtility en alguna parte? – Collin
El punto es que no deberías tener una clase FileUtility. Del mismo modo que podría escribir funciones gratuitas en C++, debería hacer lo mismo aquí. Los nombres de los módulos (que se asignan a los archivos) también deben estar en minúsculas. – Collin