-1

私はPythonで何かを作ろうとしています。別のファイルから変数をインポートしようとしていますが、うまくいかないようです...

   AttributeError: 'function' object has no attribute 'langName'

変数を含むスニペットは次のとおりです(クラスはL10Nです-PS:同じコードではありません)

def buildName(self):
   langName = 'names_'+self.language.upper()+'.txt'
   print 'Current Loaded Names:'+langName()+'.'
   return langName

そして、インポートしようとする部分(これがエラーの場所です):

names = [l.strip('\n\r').split('*')[1:] for l in open(pp+'data/etc/'+l10n.buildName.langName+'',"r").readlines() if not l.startswith('#')]

とにかくそれを修正するには?私はそれをインポートしましたが、それが機能するかどうかはわかりません。

編集: TypeError: バインドされていないメソッド buildName() は、l10n インスタンスを最初の引数として呼び出す必要があります (代わりに何も取得しません)

今これを与える。どうしてか分かりません。

4

3 に答える 3

1

コードには 2 つの問題があります。最初のものは にbuildNameあり、私はそれをコメントしました:

def buildName(self):
    langName = 'names_'+self.language.upper()+'.txt'
    print 'Current Loaded Names:'+langName+'.'   # <-- removed parens
    return langName  # <-- this is returned. no need to try to access outside the func

2つ目はそれへの呼びかけです。l10n.buildName呼び出すlangName必要があり、検索する必要はありません。

names = [l.strip('\n\r').split('*')[1:] for l in open(pp+'data/etc/'+l10n.buildName()+'',"r").readlines() if not l.startswith('#')]
于 2014-02-04T06:05:24.953 に答える
0

あなたのスニペットで

()langName は名前なので、関数を呼び出すために which is を使用することはできません

def buildName(self):
   langName = 'names_'+self.language.upper()+'.txt'
   print 'Current Loaded Names:'+langName+'.'
   return langName

()から削除langName()

于 2014-02-04T05:59:30.557 に答える
0

ここに別の問題があります: 関数を呼び出したいのですl10n.buildName()が、代わりに を実行して関数のローカル変数にアクセスしようとしていl10n.buildName.langNameます。それはありえない

関数langNameから属性を取得しようとしているため、例外が発生しますl10n.buildName'function' object has no attribute 'langName'

于 2014-02-04T06:01:38.203 に答える