【问题标题】:Cython: Overriding the `__cinit__` function with different parameters and signatureCython:用不同的参数和签名覆盖 __cinit__ 函数
【发布时间】:2023-02-07 04:23:05
【问题描述】:

我有兴趣对现有的 Cython 类进行子类化(我们称之为 A),它具有以下 __cinit__(self, int a, int b, *argv) 函数签名。

我的新班级 B 将具有以下 __cinit__(self, int a, int c, *argv),其中不再需要或使用 b

我想要一些类似的东西:

cdef class A:
    cdef int a
    cdef int b

    def __cinit__(self, int a, int b, *argv):
        self.a = a
        self.b = b

cdef class B(A):
    cdef double c

    def __cinit__(self, int a, double c, *argv):
        self.a = a
        self.c = c

有没有办法做到这一点?

【问题讨论】:

  • 如果不使用b,那么B不应该是A的子类。这独立于 Cython。

标签: python cython


【解决方案1】:

是的,您可以对现有的 Cython 类 A 进行子类化,以创建一个具有修改后的新类 B初始化方法。您提供的代码是执行此操作的正确方法。新类B继承了父类A的属性a和b,并增加了一个新的属性c。这初始化B 类中的方法采用三个参数 self、a 和 c,并设置 self. a 和 self.c 相应地

严酷的维斯瓦卡玛 @Notes360.in

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2019-12-19
    相关资源
    最近更新 更多