Неопределенные переменные, после того, как если

#python

Вопрос:

изображение

В def __ init __ я поставил токен и идентификатор канала, а в def main я использовал их в команде if, и оба они создали ошибку, что они не определены. Как это изменить? Есть ли способ вспомнить их в основном?

 import requests
import sys

class Bonk:

    def __init__(self, token, channel_id, message):
        self.token = token
        self.channel_id = channel_id
        self.message = message
        self.headers = {'Authorization': token}

    def _generate_message(self, m1):
        return m1

    def execute(self):
        return requests.post(f'https://discordapp.com/api/v6/channels/{self.channel_id}/messages', headers=self.headers, json={'content': self._generate_message(self.message)})

def main():
    if len(sys.argv) == 99999:
        print(f'Usage: py {sys.argv[0]} <TOKEN> <CHANNEL ID> "MESSAGE"')
        sys.exit()

    if token == 0:
        print('token')
        token = input()

    if channel_id == 0:
        print('channel_id')
        channel_id = input()

    message = 0
    if message == 0:
        print('message')
        message = input()

if __name__ == '__main__':
    main()
 

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

1. Пожалуйста, обновите свой вопрос с помощью полной обратной трассировки ошибок.

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

3. @CryptoFool: Проблема, с которой столкнулась операция, совершенно ясна. Проблема, с которой мы сталкиваемся, состоит в том, чтобы убедить ОП раскрыть достаточно подробностей, чтобы это стало ясно всем остальным.

4. Ну, в нем не определен «токен» main , и также нет «идентификатора канала». Вы ожидали, что эти имена будут относиться к атрибутам Bonk экземпляра, который вы никогда не создавали? Возможно, вам стоит поискать введение в Python.

5. Все ваши переменные находятся внутри функций. Это хорошее начало. К сожалению, переменные внутри функций находятся в разных областях, поэтому создаются внутри функций и удаляются при выходе из функции. Возможно, вы хотели передать переменные в качестве параметров функциям.

Ответ №1:

 if __name__ == '__main__':
   main()
 

используется для запуска функции main() при извлечении скрипта из командной строки

Теперь представьте, что вы запускаете функцию из оболочки, вы не даете ей никаких аргументов, она не может определить токен и идентификатор канала по своему значению

Ваш класс никогда не будет прочитан, если вы не создадите его экземпляр

Вам нужно иметь что-то вроде

 bonk = Bonk(token=1234,channel_id=5678,message='message')
 

И тогда вы сможете использовать

 if bonk.token == 0:
   your code