Возникает проблема при вызове другой функции из функции в том же классе

#python #python-3.x #methods #call

#python #python-3.x #методы #вызов

Вопрос:

Я использую python3. Он не распознается, когда другая функция вызывается из функции в классе. вот мой код и сообщение об ошибке

Эти коды стирают все сложные вещи, и только те, которые имеют значение. Я просто хочу вызвать get_contents() в основной функции. И get_contents() должен вызывать get_response() .

 class TClass:
    def get_response():
        return 'response'

    def get_contents():
        content = get_response()
        return content

    if __name__   == "__main__":
        contents = get_contents()
        print (contents)
 
 Traceback (most recent call last):
  File "/Users/mul/Project/mybase.py", line 2, in <module>
    class TClass:
  File "/Users/mul/Project/mybase.py", line 11, in TClass
    contents = get_contents()
  File "/Users/mul/Project/mybase.py", line 7, in get_contents
    content = get_response()
NameError: name 'get_response' is not defined
 

помогите мне. пожалуйста

«»» Я изучаю Python, просматривая документы. Я не знал, что основная функция должна быть вне функции. Спасибо всем, кто помог, хотя это было слишком просто. «»»

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

1. Что вы пытаетесь сделать с. if __name__ == "__main__": contents = get_contents() print (contents) Каков ожидаемый результат?

2. Эти коды стирают все сложные вещи, и только те, которые имеют значение. Я просто хочу вызвать get_contents() в основной функции. И get_contents() должен вызывать get_response() .

3. Вы пытаетесь вызвать метод класса без создания экземпляра?

4. Спасибо за вашу помощь и внимание. Благодаря этому все получилось хорошо.

Ответ №1:

  1. Main должен быть вне класса.
  2. Действия внутри класса, вероятно, получают self в качестве параметра; get_response могут обрабатываться без него и могут быть статическими, и если это так, то get_contents , вероятно, тоже должны быть статическими. Если это так, вам следует добавить декоратор перед ним : @staticmethod .

Я предполагаю, что ваш код должен быть:

 class TClass:
    def get_response(self):
        return 'response'

    def get_contents(self):
        content = self.get_response()
        return content

if __name__   == "__main__":
    object_t = TClass()
    contents = object_t.get_contents()
    print (contents)
 

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

1. Я легко решил ее благодаря вам. Я очень неуклюж, потому что я новичок в python. Я надеюсь на большую помощь в будущем.

Ответ №2:

Я не знаю, чего ты пытаешься добиться. Но вот мой аналогичный подход. Если бы вы сделали методы статическими, вы могли бы избежать создания экземпляра.

 class TClass:
    @staticmethod
    def get_response():
        return 'response'
    
    @staticmethod
    def get_contents():
        content = TClass.get_response()
        return content

if __name__   == "__main__":
    contents = TClass.get_contents()
    print (contents)
 

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

1. Спасибо. Но мне не нужен staticmethod. Я просто не знал, что основная функция должна быть вне функции.