#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:
- Main должен быть вне класса.
- Действия внутри класса, вероятно, получают 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. Я просто не знал, что основная функция должна быть вне функции.