在 Cython 中共享扩展类型以实现静态类型

2024-03-29

我将 Python 类转换为 .pyx 文件内的扩展类型。我可以在另一个 Cython 模块中创建这个对象,但是我无法进行静态类型处理用它。

这是我的课程的一部分:

cdef class PatternTree:

    cdef public PatternTree previous
    cdef public PatternTree next
    cdef public PatternTree parent
    cdef public list children

    cdef public int type
    cdef public unicode name
    cdef public dict attributes
    cdef public list categories
    cdef public unicode output

    def __init__(self, name, parent=None, nodeType=XML):
        # Some code

    cpdef int isExpressions(self):
        # Some code

    cpdef MatchResult isMatch(self, PatternTree other):
        # Some code

    # More functions...

我尝试使用 .pxd 文件来声明它,但它在我的所有函数上显示“C 方法 [某些函数] 已声明但未定义”。我还尝试在我的实现函数中剥离 C 内容,使其像增强类一样工作,但这也不起作用。

这是我的 .pxd:

cdef class PatternTree:
    cdef public PatternTree previous
    cdef public PatternTree next
    cdef public PatternTree parent
    cdef public list children

    cdef public int type
    cdef public unicode name
    cdef public dict attributes
    cdef public list categories
    cdef public unicode output

    # Functions
    cpdef int isExpressions(self)
    cpdef MatchResult isMatch(self, PatternTree other)

感谢您的帮助!


我找到了解决办法。这是解决方案:

In .pyx:

cdef class PatternTree:

    # NO ATTRIBUTE DECLARATIONS!

    def __init__(self, name, parent=None, nodeType=XML):
        # Some code

    cpdef int isExpressions(self):
        # Some code

    cpdef MatchResult isMatch(self, PatternTree other):
        # More code

In .pxd:

cdef class PatternTree:
    cdef public PatternTree previous
    cdef public PatternTree next
    cdef public PatternTree parent
    cdef public list children

    cdef public int type
    cdef public unicode name
    cdef public dict attributes
    cdef public list categories
    cdef public unicode output

    # Functions
    cpdef int isExpressions(self)
    cpdef MatchResult isMatch(self, PatternTree other)

在任何 Cython 模块(.pyx)中,我想将其用于:

cimport pattern_tree
from pattern_tree cimport PatternTree

最后一句警告:Cython不支持相对导入。这意味着您必须提供相对于您正在执行的主文件的整个模块路径。

希望这对那里的人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Cython 中共享扩展类型以实现静态类型 的相关文章

  • 处理连接重置错误

    我有一个关于在 Python3 中处理 ConnectionResetError 的问题 当我使用 urllib request Request 函数时 通常会发生这种情况 我想知道如果我们遇到这样的错误是否可以重做请求 例如 def ge
  • 重新格式化 csv 文件

    我有这个 csv 文件 其中只有两个条目 这里是 Meat One Abattoirs Exporters Food Delivery Butchers Retail Meat Dealers Retail Meat Freezer Mea
  • Nonetype 错误/使用 python 的 beautifulsoup 没有打印任何元素

    所以我尝试使用 python 比较 2 个列表 其中一个包含我从网站获取的 1000 个链接 另一个包含一些单词 这些单词可能包含在第一个列表的链接中 如果是这种情况 我想得到一个输出 我打印了第一个列表 它确实有效 例如 如果链接是 ht
  • Pulp.pulpTestAll() 测试失败,太多值无法解压

    我的操作系统是window 7 Pulp版本是1 6 1 gurobi版本是7 0 1 可以成功导入gurobipy Pull solvers GUROBI确实通过了测试 所以我可以使用gurobi 然而 pulp solvers CPLE
  • Beautiful Soup 中 find_all 方法的返回类型是什么?

    from bs4 import BeautifulSoup SoupStrainer from urllib request import urlopen import pandas as pd import numpy as np imp
  • python setup.py Egg_info 失败,错误代码 1

    我正在运行 Ubuntu 17 04 全新安装 并且已经安装了 pip 但是 当我尝试安装任何东西时 我得到以下信息 命令 python setup py Egg info 失败 错误代码为 1 tmp pip build kBfUEp k
  • Pandas:删除具有纳米值索引的行

    给定以下 pandas DataFrame 其中一些索引是NaN 如何删除第三行和第八行 因为它们的索引是NaN Thanks import pandas as pd import numpy as np data list abcdefg
  • 用于多输入图像的 VGG16 网络

    我正在尝试将 VGG16 网络用于多个输入图像 使用具有 2 个输入的简单 CNN 训练该模型给了我一个 acc 大约 50 这就是为什么我想使用 VGG16 这样的既定模型进行尝试 这是我尝试过的 imports from keras a
  • 使用 BeautifulSoup 在 python 中抓取多个页面

    我已经设法编写代码来从第一页中抓取数据 现在我不得不在这段代码中编写一个循环来抓取接下来的 n 页 下面是代码 如果有人可以指导 帮助我编写从剩余页面中抓取数据的代码 我将不胜感激 Thanks from bs4 import Beauti
  • Python 列联表

    作为我正在编写的项目的一部分 我正在生成很多很多列联表 工作流程是 获取具有连续 浮点 行的大型数据数组 并通过分箱将其转换为离散整数值 例如 结果行的值为 0 9 将两行切片为向量 X 和 Y 并生成列联表 https en wikipe
  • pd.merge_asof 在第二次运行时失败,并显示“ValueError:左键必须排序”

    您好 我正在尝试合并最接近匹配的日期时间的两个数据集 我有开放事件和封闭事件的两个时间戳 merge asof 在开放日期运行良好 但返回 ValueError 左键必须排序 在第二个日期时间 我在这两种情况下都按相关的日期时间排序 第一个
  • 将文件添加到现有 zip 文件

    我正在使用 python 的zipfile module zip 文件位于以下路径 home user a b c test zip并在下面创建另一个文件 home user a b c 1 txt我想将此文件添加到现有的 zip 中 我这
  • 在 Python 中通过 TCP 套接字发送文件

    我已经成功地将文件内容 图像 复制到新文件 然而 当我通过 TCP 套接字尝试同样的事情时 我遇到了问题 服务器循环未退出 客户端循环在到达 EOF 时退出 但服务器无法识别 EOF 这是代码 Server import socket Im
  • 如何使用不同的类和导入动态地使用 Python 日志记录来更改文件句柄

    我无法执行即时日志文件句柄更改 例如 我有3节课 one py import logging class One def init self txt logging debug Hey I m the class One and I say
  • 没有名为“_pywrap_tensorflow_internal”的模块

    在尝试验证tensorflow gpu的安装时 在尝试执行 import tensorflow as tf 时出现ImportError 我在 Windows 7 上使用 Quadro K620 Tensorflow 是使用 pip 安装的
  • Python 比 C++ 更快、更轻吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将多列传递给 groupby.transform

    据我所知 当您使用 DataFrame 列调用 groupby transform 时 该列将传递给转换数据的函数 但我无法理解的是如何将多个列传递给函数 people DataFrame np random randn 5 5 colum
  • 如何获得 GTK 中的默认颜色?

    Context 在 GTK 3 中 人们可以设置自己的主题 甚至默认主题 Adwaita 也提供两种变体 浅色和深色 当我编写自己的小部件 用Python 时 我需要获取这些颜色以避免在黑色上绘制黑色或在白色上绘制白色 Question 如
  • django:自动为现有用户创建用户配置文件

    我今天在我的项目中添加了一个新的 UserProfile 模型 class UserProfile models Model user models OneToOneField User def unicode self return u
  • 将行追加到 Pandas DataFrame 添加 0 列

    我正在创建一个 Pandas DataFrame 来存储数据 不幸的是 我无法提前知道我将拥有的数据行数 所以我的方法如下 首先 我声明一个空的 DataFrame df DataFrame columns col1 col2 然后 我附加

随机推荐

  • 如何检查 iCloud 是否以编程方式配置

    这是苹果文档中的一句话 如果未配置 iCloud 请询问用户是否要配置它 如果要配置 iCloud 最好将他们转移到启动设置 如何检查 iCloud 是否已配置以及如何启动 iCloud 设置 Edit 如果您的目标是 iOS6 或更高版本
  • 在 FTP 上上传多个文件

    我是 Objective C 和 iOS 的新手 我正在使用 SimpleFTPSample 制作用于将文件上传和下载到 ftp 的测试应用程序 我需要在 ftp 上上传两个文件 但在 SimpleFTPSample 中您只能上传一个 那么
  • Silverlight工具包图表线系列颜色选择

    我正在使用 Silverlight 4 工具包并使用图表控件 特别是线系列 我还使用 Microsoft Silverlight 主题之一 它带有一些图表的默认样式 我知道在 ToolkitStyles xaml 中有大量供图表工具包使用的
  • 在Linux中使用命令行检查单个线程优先级

    我可以通过转到 proc pidof task 并给出来查看应用程序中使用的线程数 猫的状态 有没有办法使用命令检查Linux中各个线程的优先级 Regards Learner 运行 ps m l 它将列出所有线程和特定 PID 的优先级
  • Django视图响应时间问题

    您好 我有很多从查询中获得的对象 查询集尚未评估 当我将对象列表传递给分页器对象时 花了 14 秒才返回分页器对象 这是因为它正在评估列表中的所有对象 这需要时间 可能会击中数据库 在将查询集发送到分页器对象之前 我强制评估了查询集 如下所
  • Spring Integration 链流程 - 处理无效网关调用

    我有一个 Spring 集成流程 其中有一个对网关服务的服务激活器调用 该服务的结果无效并且似乎挂起 它不会继续链的其余部分 我是否需要指定其他内容来表明我不希望网关调用返回结果以继续线程执行 我有一个 void 方法声明 Service
  • 查找Python代码中除法运算符的所有用法

    我想找到我的所有实例python除法运算符的代码 用来 我的第一直觉是使用正则表达式 该表达式需要过滤掉非除法的使用 即路径名 我想出的最好的是 A z0 9 A z0 9 这将找到除法运算符 foo bar foo bar foo bar
  • 启动应用程序(如果已安装),或使用安装引荐来源网址打开 Google Play

    我们正在尝试生成一个链接 当在浏览器中单击该链接时 将打开我们的应用程序 如果已安装 这通常是通过以下方式完成的 intent some domain some parameters Intent scheme somescheme pac
  • jQuery 检查元素是否具有 css 属性

    我需要知道当我单击一个元素时该元素是否具有 CSS 属性 我正在考虑这样的事情 但它不起作用 if element attr text shadow alert i Have else alert i dont 关于这一点有什么建议吗 谢谢
  • 如何将 datetime.date 对象转换为 python 中的 datetime.datetime ? [复制]

    这个问题在这里已经有答案了 可能的重复 将 datetime date 对象转换为 datetime datetime 对象 其中任何缺失的时间属性均为零 https stackoverflow com questions 11192814
  • 在多列中显示单选框列表

    我有一个 php 循环 列出了 50 个单选框 我想在每列上放置 10 个单选框 我试过 div 样式 溢出 隐藏 空白 nowrap 浮动 左 宽度 160px gt 生成代码 php j 0 php foreach from genre
  • 如何使用 IHTTPNegotiate 添加额外的 http 标头?

    如何使用 HTTP Negotiate 向请求添加额外的标头 我添加了接口但功能BeginningTransaction OnResponse永远不会被打电话 TNameSpaceHandler class TComObject IInte
  • 如何获取 Amazon 的 AWS_ACCESS_KEY_ID?

    我对 AWS 完全陌生 我从亚马逊下载了一些示例代码 我需要设置一些常量 AWS ACCESS KEY ID AWS SECRET ACCESS KEY MERCHANT ID MARKETPLACE ID 我刚刚创建了一个 AWS 账户
  • QT 程序包含带有 if-test-then 块的 bash 脚本以及内部问题错误中转义的必要引号

    我正在尝试在 QT 应用程序中运行一个小型 bash 脚本 其中包含 if test then 块以及测试中必要的引号 由于脚本应该由 QT 编译并由 bash 运行 因此引号必须转义两次 因此引号的转义反斜杠也必须转义 正如我所见 不幸的
  • Javascript + HTML - 在后台加载图像(异步?)

    我发现了许多描述 javascript 图像加载的主题 但并不完全是我正在寻找的内容 我目前正在以正常方式加载 html 中的图像 例如 img src images big image jpg 这会导致网页上有空白区域 从上到下填充有加载
  • iOS 6 - 如何获得“释放刷新”动画?就像在邮件中一样?

    在邮件应用程序中 我们现在可以drag the view down and release to refresh 如下图所示 这是我可以从 SDK 获得的标准东西吗 Thanks 使用新的iOS6UIRefreshControl https
  • 如何在 Slim 模板中渲染 HTML

    我正在尝试渲染一个前面带有图标的链接 我在用着Slim https github com stonean slim模板引擎以及引导CSS http twitter github com bootstrap base css html ico
  • 如何模拟数据库故障以进行测试(在 Ruby on Rails 中)

    通过某些监视工具 例如 Monit 通过心跳消息来监视应用程序是一种常见的设置 如果应用程序正在运行并且一切正常 它会返回 我还活着 消息 如果数据库失败或 Web 服务器挂起 它不会返回任何内容或返回内部服务器错误 HTTP 状态代码 5
  • Jupyter 笔记本中的函数单元测试?

    我有一个 Jupyter 笔记本 我打算反复运行 里面有函数 代码结构是这样的 def construct url data return url def scrape url url fetch url extract data retu
  • 在 Cython 中共享扩展类型以实现静态类型

    我将 Python 类转换为 pyx 文件内的扩展类型 我可以在另一个 Cython 模块中创建这个对象 但是我无法进行静态类型处理用它 这是我的课程的一部分 cdef class PatternTree cdef public Patte