Я получаю "глобальное имя [имя функции] не определено", когда я пытаюсь сослаться на функцию, которую я определил ранее
В основном, вот формат моего кода:
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)