Python - 'function'对象没有属性'langName'

时间:2014-02-04 05:55:26

标签: python panda3d

我正在尝试用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:必须首先使用l10n实例调用未绑定方法buildName()  争论(没有取而代之)

现在给出这个。我不知道为什么。

3 个答案:

答案 0 :(得分:1)

代码有两个问题。第一个是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

第二个是对此的呼吁。需要调用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('#')]

答案 1 :(得分:0)

在您的代码段中

langName是一个名称,所以你不能使用()来调用函数

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

()

中删除了langName()

答案 2 :(得分:0)

这是另一个问题:你想调用一个函数l10n.buildName(),而是试图通过l10n.buildName.langName来访问函数的局部变量。这是不可能的

由于您尝试从langName函数获取属性l10n.buildName,因此会出现'function' object has no attribute 'langName'异常