0

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

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 时,我得到“未定义全局名称'alphaNum'”(细节省略,但我知道打印语句是错误发生的地方)

我很肯定我忽略了一些愚蠢的东西,我(喜欢认为我)很好地处理范围,在使用它们之前定义事物等等。

编辑:

谢谢你们的帮助!我最终只是将 alphaNum() 移到了课堂之外。对于那些感兴趣的人,这样做的实际目的是处理 Amazon 用于 CloudFormation 的 boto 接口的怪癖。它会愉快地返回带有“-”的资产 id 值,然后抱怨模板中没有任何值。这就是生活...

4

1 回答 1

4

那是因为alphaNumSomeClass. 此外,它不是 a 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)
于 2014-11-14T16:24:12.657 回答