Python: невозможно наследовать от расширения C

Я пытаюсь добавить несколько дополнительных методов к типу матрицы из библиотеки pysparse. Кроме того, я хочу, чтобы новый класс вел себя точно так же, как оригинал, поэтому я решил реализовать изменения, используя наследование. Однако, когда я пытаюсь

from pysparse import spmatrix class ll_mat(spmatrix.ll_mat): pass 

это приводит к следующей ошибке

 TypeError: Error when calling the metaclass bases cannot create 'builtin_function_or_method' instances 

Что это вызывает эту ошибку? Есть ли способ использовать делегирование, чтобы мой новый класс вел себя точно так же, как оригинал?

  • django admin inlines: получить объект из formfield_for_foreignkey
  • .class файл из jython с pydev
  • Список имен тензоров в графе в Tensorflow
  • Как удалить фон из этого изображения?
  • Django: тестирование, если страница перенаправлена ​​на нужный URL-адрес
  • Закрепление строк unicode в Python
  • Как разбить абзац предложениями в Python
  • Как читать токены, не читая целую строку или файл
  • One Solution collect form web for “Python: невозможно наследовать от расширения C”

    ll_mat документируется как функция, а не сам тип. Идиома известна как «фабричная функция» – она ​​позволяет «создателю вызываемого» возвращать разные фактические базовые типы в зависимости от его аргументов.

    Вы можете попытаться сгенерировать объект из этого и затем наследовать от этого типа объекта:

     x = spmatrix.ll_mat(10, 10) class ll_mat(type(x)): ... 

    помните, однако, что вполне возможно, что встроенный тип объявит, что он не будет подклассифицирован (это можно сделать даже для сохранения некоторых скромных издержек); если это то, что делает этот тип, тогда вы не можете подклассифицировать его и скорее придется использовать сдерживание и делегирование, то есть:

     class ll_mat(object): def __init__(self, *a, **k): self.m = spmatrix.ll_mat(*a, **k) ... def __getattr__(self, n): return getattr(self.m, n) 

    etc и т. д.

    Interesting Posts

    unbound method должен быть вызван с экземпляром X в качестве первого аргумента (вместо этого используется экземпляр X)

    Python pip install дает команду «command» python setup.py egg_info «не удалось с кодом ошибки 1»

    Запуск сценария python в терминале, ничего не распечатывается или не появляется – почему?

    flask-login: не могу понять, как это работает

    Видимость модулей расширения os.environ до C

    Как получить идентификатор процесса в Unix или Linux с помощью Python?

    Ошибка TVTK в Mayavi (Python)

    Twython – Как обновить статус с помощью URL-адреса мультимедиа

    Целые числа как единственные действительные входы

    Google App Engine / Python – изменение формата ведения журнала

    Как изменить шрифт и размер кнопок и фрейма в tkinter с помощью python?

    Как определить приложение, сфокусированное в данный момент?

    Как установить цвет границы некоторых виджетов Tkinter?

    Ошибка установки pyusb 2.7 windows

    Ускорение загрузки первой страницы в django

    Python - лучший язык программирования в мире.