我的课程之一如下:

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,..)一样使用它。 我怎样才能做到这一点?

  ask by wtayyeb translate from so

本文未有回复,本站智能推荐: