Почему моя 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()