Как использовать PyObject_IsInstance с не встроенным классом в качестве второго аргумента?

В C / C ++ я хочу увидеть, является ли PyObject экземпляром. К сожалению, макрос PyInstance_Check не работает с классами нового стиля.

Итак, согласно сообщениям в форумах, которые я читал, PyObject_IsInstance мог решить проблему. Тем не менее, все примеры, которые я нашел, демонстрируют сравнение со встроенными типами, такими как int и строки.

Я хочу знать, как я могу построить PyObject, представляющий класс типа, поэтому я могу передать его во второй аргумент PyObject_IsInstance . Вы можете мне помочь?

    2 Solutions collect form web for “Как использовать PyObject_IsInstance с не встроенным классом в качестве второго аргумента?”

    Я, наконец, нашел ответ сам, основываясь на содержании этой страницы: Создать экземпляр класса python, объявленного в python, с API C

     // PyInstance_Check works only for old-style classes. qBool isInstance = PyInstance_Check(pyInstance); if (!isInstance) { // It might be an instance of a new-style class. // PyRef module = PyImport_ImportModule("module.where.myclass.is"); PyObject* moduleDict = PyModule_GetDict(module.Get()); PyObject* protocolClass = PyDict_GetItemString(moduleDict, "MyClass"); int returnValue = PyObject_IsInstance(pyObject, protocolClass); } 

    Вы можете использовать соответствующий PyTypeObject если он определен в том же модуле. Если объект типа (скажем, он называется ProtocolType ) не отображается, откуда вы хотите использовать PyObject_IsInstance , сначала объявите прототип с:

     extern PyTypeObject ProtocolType; 

    И затем используйте его так:

     PyObject_IsInstance(object, reinterpret_cast<PyObject*>(&ProtocolType) 
     
    Interesting Posts for Van-Lav

    Как изменить текущий фон выделения строки в Pycharm?

    Использование os.walk для перехода на папки в Python

    индексирование сферического подмножества данных сетки 3d в numpy

    Нет автоинкремента для Integer Первичный ключ в sqlite3

    Можно ли изменить параметры по умолчанию в Python?

    «Преобразование» массивов Nump в Matlab и наоборот

    Как перезагрузить модели Django, не теряя своих местных жителей в интерактивном сеансе?

    scipy: Интерполирующая траектория

    Итерировать строку формата над списком

    Каков наиболее эффективный способ сопоставления элементов списка с строками в большом файле в Python?

    Использование WordNet для определения семантического сходства между двумя текстами?

    Получение stdout из подпроцесса tcpdump после его завершения

    как преобразовать этот вложенный JSON в столбчатой ​​форме в рамку данных Pandas

    Запуск подмножества автоматически открытых python unittests

    Селену требуется много времени, чтобы найти элемент. Есть ли что-то, что я могу сделать?

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