【发布时间】:2020-07-10 04:52:36
【问题描述】:
使用__init__的代码块1
%%cython -3
cdef class c:
cdef:
int a
str s
def __init__(self):
self.a=1
self.s="abc"
def get_vals(self):
return self.a,self.s
m=c()
print(m.get_vals())
使用__cinit__的代码块2
%%cython -3
cdef class c:
cdef:
int a
str s
def __cinit__(self): # cinit here
self.a=1
self.s="abc"
def get_vals(self):
return self.a,self.s
m=c()
print(m.get_vals())
-
我测试了这两个代码,都运行没有错误。 在这种情况下,使用
__cinit__而不是__init__有什么意义? -
看过官方文章,被一句话搞糊涂了:
如果您需要将修改后的参数列表传递给基类型,则必须改为在
__init__()方法中执行初始化的相关部分,其中调用继承方法的正常规则适用。
“修改参数”是什么意思?这里,为什么要使用 init 而不是 cinit?
【问题讨论】: