Не наследуется класс в python-docx бибиотеке
Почему-то выбивает ошибку при наследовании класса Document.
Код:
from docx import Document
class MyDoc(Document):
def __init__(self):
super().__init__()
self.save("WTF.docx")
if __name__=="__main__":
dc = MyDoc()
Ошибка:
TypeError: function() argument 'code' must be code, not str
Указывает на строку "class MyDoc(Document):"
Как будто Document - это строка. Но ведь при использовании в библиотеке можно убедиться, что это класс. Пример использования Document:
from docx import Document
if __name__=="__main__":
dc = Document()
dc.save("WTF.docx")
И этот код работает.
В чем проблема???
Ответы (2 шт):
Document это функция которая возвращает экземпляр класса.
Мы должны получить экземпляр класса, а потом с помощью type узнать экземпляром какого класса он является
class MyDoc(type(Document())):
Спасибо всем, кто помог. Но способ с type не работает. Не по причинам того, что способ неправильный, а , видимо, из-за особенностей библиотеки. Выбивает ошибку:
TypeError: init() missing 2 required positional arguments: 'element' and 'part'
Скорее всего в недрах библиотеки Document Имеет какие-то принимаемые значения в конструкторе. Копаться в этом не сильно хочется, вряд ли будет какой-то не костыльный способ. Проще уж тогда не наследовать класс, а писать код по-другому.
Всем спасибо, но если будут идеи, как можно просто это сделать, то пишите, буду очень благодарен.