Скрипт Python возвращает ошибку «функция не определена»

#python-3.x #class #methods

#python-3.x #класс #методы

Вопрос:

Я пишу класс Python и пытаюсь вызвать функцию из другой функции в классе, но я сталкиваюсь с ошибкой. NameError: name 'bobfunction' is not defined . Мой вызов класса работает, даже вызов метода / функции job работает. При job попытке вызова bobfunction я получаю сообщение об ошибке. удаление вызова bobfunction работает. Итак, как мне вызвать функцию bobfunction из функции job?

 class stuff():
    def __init__(self):
        #setup stuff

     def bobfunction(self,junk):
         print("should work")
         return ''

      def job(self,data):
          bobfunction('test data')
          return 'other junk'
  

Комментарии:

1. Кажется, что ваш отступ смещен. def Функция in job должна совпадать с def функцией in bobfunction

Ответ №1:

Запустите его с self.bobfunction("test data")

Python использует ключевое слово self для ссылки на методы класса и переменные того же класса. Это похоже на this ключевое слово в других языках. (Хотя и не то же самое) . Если вы в конечном итоге определяете переменную в своей __init__ функции, вы также можете использовать ее с self.variable_name в других функциях.

Ответ №2:

Вы должны попытаться запустить его с помощью stuff.bobfunction(self, «тестовые данные») Поскольку функция bobfunction была расположена в материале класса, вам нужно написать имя класса перед именем функции. Self в круглых скобках должен передавать имя self.