名前クラスの接頭辞で呼び出し可能な静的メソッドのみを含むユーティリティクラスの種類を作成したいとします。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)
を私は何か間違って:)
- 私が間違って何をやっている:
Aは、ここではいくつかの質問がありますか?静的メソッドをclassnameで呼び出し可能にすべきではありませんか?
- 私は本当にユーティリティクラスが必要ですか、それともPythonで同じことを達成する他の方法はありますか?
- 私が取得していますメインのコードに変更しようとした場合:
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
こんにちはコリン、返事をありがとう、あなたが示唆したように、私は、メソッドのリストと、メインにプレーンのpythonファイルでします。dir = FileUtility.GetFilePath(パス)私はエラーが発生しました:unboundメソッドGetFilePath()はFileUtilityインスタンスを最初の引数として呼び出さなければなりません(代わりにstrインスタンスを取得) – ilyaw77
最初の実行時にそこに迷子になってしまいました。あなたはまだFileUtilityクラスをどこかに持っていますか? – Collin
ポイントは、FileUtilityクラスを持つべきではないということです。 C++で自由な関数を書くのと同じように、ここで同じことをする必要があります。モジュール名(ファイルにマップする)もすべて小文字にする必要があります。 – Collin