我的课程之一如下:
class UnitFloat(float):
''' UnitFloat(value, unit) '''
__slots__ = ('unit',)
### Make UnitFloat Immutable
def __new__(cls, value, unit):
''' Create new instance of UnitFloat(value, unit) '''
instance = float.__new__(cls, value)
instance.unit = unit
return instance
def __getnewargs__(self):
''' Return self as a plain tuple. Used by copy and pickle. '''
return (self.value, self.unit)
value = property(float)
def getIn(self, unit, decimal=None):
...
def __add__(self, other):
o = change_other_to_self_unit(other, self.unit)
v = self.value + o.value
return UnitFloat(v, self.unit)
...
我还定义了一些魔术方法,例如__add__
, __mul__
, __pow__
,...
我知道Cython可以非常有效地编译内部类型。 但它们仅限于int,float,bool等。 似乎必须创建一个扩展并使用它。 但我不知道如何为示例类定义此类扩展。
问:我想创建一个定义文件(* .pxd),以便Cython可以比Pure-Python-Mode更好地对其进行编译,并且可以像内置类型(int,float,long,..)一样使用它。 我怎样才能做到这一点?