Почему моя IDE не может выполнить автозаполнение для python-docx?

Когда я использую python-docx, моя IDE, как и pycharm wing, не может выполнить автозаполнение. этот код

from docx import Document

asd = Document()
asd.add_heading("test")
asd.save("cao.docx")

когда я набираю asd. add_heading не может выполнить автозаполнение.

from docx.document import Document  

asd = Document()
asd.save()
this code can Auto-Complete
but atention

TypeError: init () отсутствует 2 обязательных позиционных аргумента: 'element' и 'part'

Извините за мой плохой английский

4 ответа

Решение

В последнем случае вы по ошибке импортируете docx.document.Document скорее, чем docx.Document, Document класс в docx.document имеет другую подпись вызова и в любом случае не тот, который вы хотите:)

По сути дела, docx.Document(...) на самом деле метод, который возвращает объект docx.document.Document учебный класс.
(Возможно, они должны были назвать этот метод, следуя соглашению об именах, скажем, что-то вроде docx.create_document(...))

Следовательно, вы должны использовать оба следующих импорта, чтобы получить видимость содержимого docx.document.Document учебный класс:

from docx import Document
from docx.document import Document

У меня для PyCharm 2023.1 работало только следующее:

      
from docx import Document as CreateDocument
from docx.document import Document

document: Document = CreateDocument()

Используйте этот обходной путь, чтобы иметь функцию автозаполнения в вашей среде IDE и не получать TypeError: init() missing 2 required positional arguments: 'element' and 'part':

      from docx.document import Document
try:
    document = Document()
except TypeError:
    from docx import Document
    document = Document()

Другие вопросы по тегам