anijackich
@anijackich

Почему не работает модуль в python?

Есть python модуль module:
import requests

class module:
    def __init__(self):
        self._BASE_DOMAIN = 'xxx.ru'

    def get_problem_by_id(self,  id):
        doujin_page = requests.get(f'{self._BASE_DOMAIN}/problem?id={id}')
        return ...
       ...

if __name__ == '__main__':
    module = module()


Когда я вызываю функцию из этого же файла все нормально:
import requests

class module:
    def __init__(self):
        self._BASE_DOMAIN = 'xxx.ru'

    def get_problem_by_id(self,  id):
        doujin_page = requests.get(f'{self._BASE_DOMAIN}/problem?id={id}')
        return ...
       ...

if __name__ == '__main__':
    module = module()

print(module.get_problem_by_id('123'))

[нужный результат]

Process finished with exit code 0


Но когда я импортирую модуль из другого файла:
import module

print(module.module.get_problem_by_id('123'))

Происходит вот такая беда:
Traceback (most recent call last):
  File "c:/.../test.py", line 3, in <module>
    print(module.module.get_problem_by_id('123'))
TypeError: get_problem_by_id() missing 1 required positional argument: 'id'


Ладно, допустим сделаем как он хочет и напишем второй (ведь явно не нужный) аргумент, чтобы хоть что то изменилось:
import module

print(module.module.get_problem_by_id('123','123'))

Получаем:
Traceback (most recent call last):
  File "c:/.../test.py", line 3, in <module>
    print(module.module.get_problem_by_id('123','123'))
  File "C:\...\AppData\Local\Programs\Python\Python37-32\lib\site-packages\module\__init__.py", line 37, in get_problem_by_id
  f'{self._BASE_DOMAIN}/problem?id={id}')
AttributeError: 'str' object has no attribute '_BASE_DOMAIN'


Понимаю, что он по какой то причине принимает self за обыкновенный аргумент, и присваевает ему '123'. Я плохо знаком с классами и self'ом, поэтому окончательно запутался

Буду рад любой помощи!
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 1
yupiter7575
@yupiter7575
Python программист
if __name__ коснтрукцию уберите и прочитайте хотя бы книжку про python
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
16 июн. 2024, в 08:11
1000 руб./за проект
16 июн. 2024, в 07:58
600 руб./в час
16 июн. 2024, в 07:57
10000 руб./за проект