奇怪的Cython语法

MLh*_*ker 1 python cython

我正在查看快速分数库,我发现了以前从未见过的这种cython语法:

  an, ad = (<Fraction>a)._numerator, (<Fraction>a)._denominator
Run Code Online (Sandbox Code Playgroud)

什么是(<Fractions>a)代表?这似乎是某种内存分配.但是,我不确定.

Dav*_*idW 5

这是一个类型演员.

它确保用Cython的对象真的是Fraction这样,它可以访问_numerator_denominator的属性cdef类型.如果没有强制转换,它只能使用通用的Python查找机制来查找不允许您访问类型的任何非public属性的属性cdef.

它没有做任何检查,它实际上是正确的类型,所以如果你不是100%确定对象实际上是一个分数,那么你应该做,<Fraction?>而不是检查.