我得到的全局名称[功能名称]未定义'当我尝试引用我之前定义的函数时

时间:2014-11-14 16:22:05

标签: python global repost

基本上,这是我的代码格式:

class SomeClass():

    # RegEx to remove all non-alphanumeric characters from a string
    def alphaNum(original):
        return str(re.sub(r'[^a-zA-Z0-9]','', original))


    # Write to xlsx file =====================================================
    def write(self):
        #CODE###
        uglyString = 'asasdf-)aws'

        print alphaNum(uglyString)
        #I've also tried calling self.alphaNum(uglyString), for what it's worth

我得到了全球名称' alphaNum'没有定义"当我从另一个文件调用write时(详细信息遗漏,但我知道print语句是发生错误的地方)

我是正面的我忽略了一些愚蠢的事情,我(我想我认为)对范围有很好的处理,在使用它们之前定义事物等等。

编辑:

感谢帮帮!我最终只是将alphaNum()移到了课堂之外。对于那些感兴趣的人,其实际目的是处理亚马逊的CloudFormation boto界面的怪癖。它会愉快地返回资产ID值' - '在他们中间,然后抱怨你在模板中没有任何东西。这就是生活......

1 个答案:

答案 0 :(得分:3)

那是因为alphaNumSomeClass的成员。此外,它不是staticmethod,因此第一个参数应为self

我不太确定你为什么把这一切都放在课堂上,但它看起来应该是这样的:

class SomeClass():

    @staticmethod
    def alphaNum(original):
        """RegEx to remove all non-alphanumeric characters from a string"""
        return str(re.sub(r'[^a-zA-Z0-9]','', original))

    def write(self):
        """Write to xlsx file"""

        uglyString = 'asasdf-)aws'

        print SomeClass.alphaNum(uglyString)