Metody statyczne klasy Python
Chcę utworzyć rodzaj klasy narzędziowej, która zawiera tylko metody statyczne, które można wywołać przez prefiks klasy nazw. Wygląda na to, że robię coś źle :)
Oto moja mała klasa:
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
Teraz moja „główna” metoda:
from FileUtility import *
def main():
path = 'C:\config_file_list.txt'
dir = FileUtility.GetFilePath(path)
print dir
i dostałem błąd:unbound method GetFilePath() must be called with FileUtility instance as first argument (got str instance instead)
.
Masz tutaj kilka pytań:
Co ja robię źle? Czy metoda statyczna nie powinna być wywoływana przez nazwę klasy?Czy naprawdę potrzebuję klasy narzędziowej, czy są inne sposoby osiągnięcia tego samego w Pythonie?Jeśli spróbuję zmienić kod w głównym, otrzymuję:TypeError: GetFilePath() takes exactly 1 argument (2 given)
Nowamain
:
from FileUtility import *
def main():
objFile = FileUtility()
path = 'H:\config_file_list.txt'
dir = objFile.GetFilePath(path)
print dir