当我试图引用我之前定义的函数时,我得到的是'global name[function name]is not defined'

2024-06-01 00:44:40 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我的代码格式如下:

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

当我从另一个文件调用write时,我得到“global name‘alphaNum’is not defined”(未定义详细信息,但我知道print语句是发生错误的地方)

我很肯定我忽略了一些愚蠢的东西,我(喜欢认为我)对范围有很好的把握,在使用它们之前先定义事物,等等

编辑:

谢谢你们的帮助!最后我把alphaNum()移到了类之外。对于那些感兴趣的人来说,这项研究的实际目的是处理Amazon用于CloudFormation的boto接口的古怪之处。它很乐意返回带有“-”的资产id值,然后抱怨在模板中不能有任何值。这就是生活。。。在


Tags: to代码selfdef格式allremoveclass
1条回答
网友
1楼 · 发布于 2024-06-01 00:44:40

这是因为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)

相关问题 更多 >