Desidero creare un tipo di classe di utilità che contenga solo metodi statici richiamabili dal prefisso della classe nome. Sembra che sto facendo qualcosa di sbagliato :)Metodi statici di classe Python
Qui è la mia piccola classe:
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
Ora il mio metodo "main":
from FileUtility import *
def main():
path = 'C:\config_file_list.txt'
dir = FileUtility.GetFilePath(path)
print dir
e ho ottenuto un errore: unbound method GetFilePath() must be called with FileUtility instance as first argument (got str instance instead)
.
A hanno alcune domande qui:
- Che cosa sto facendo di sbagliato? Il metodo statico non dovrebbe essere chiamato per nome di classe?
- Ho davvero bisogno di una classe di utilità, o ci sono altri modi per ottenere lo stesso risultato in Python?
- Se provo a cambiare il codice principale sto ottenendo:
TypeError: GetFilePath() takes exactly 1 argument (2 given)
Il nuovo main
:
from FileUtility import *
def main():
objFile = FileUtility()
path = 'H:\config_file_list.txt'
dir = objFile.GetFilePath(path)
print dir
Hi Collin, grazie per la risposta, ho fatto come lei ha suggerito, file di pitone pianura con elenco dei metodi e nelle principali: dir = FileUtility.GetFilePath (percorso) Ho ricevuto un errore: metodo GetFilePath() non associato deve essere chiamato con l'istanza FileUtility come primo argomento (ottenuto invece istanza str) – ilyaw77
Scusa, lasciato un auto randagio lì dentro alla prima esecuzione. Hai ancora una classe FileUtility da qualche parte? – Collin
Il punto è che non dovresti avere una FileUtility di classe. Proprio come potresti scrivere funzioni libere in C++, dovresti fare lo stesso qui. I nomi dei moduli (che mappano ai file) dovrebbero essere tutti in minuscolo. – Collin