我的一个课程如下:
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 ,..)。我怎么能这样做?