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'ом, поэтому окончательно запутался

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

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

Похожие вопросы