Я получаю "глобальное имя [имя функции] не определено", когда я пытаюсь сослаться на функцию, которую я определил ранее

В основном, вот формат моего кода:

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() за пределы класса. И для тех, кто заинтересован, реальная цель этого состоит в том, чтобы справиться с особенностями интерфейса boto Amazon для CloudFormation. Он с радостью вернет значения идентификатора ресурса с '-' в них, а затем будет жаловаться, что в шаблоне их нет. Такова жизнь...

1 ответ

Решение

Это потому что alphaNum является членом SomeClass, Кроме того, это не 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)
Другие вопросы по тегам