我正在查看快速分数库,我发现了以前从未见过的这种cython语法:
an, ad = (<Fraction>a)._numerator, (<Fraction>a)._denominator
(<Fractions>a)
代表什么?这似乎是某种内存分配。但是,我不确定。
答案 0 :(得分:5)
它向Cython保证该对象确实是REG ADD HKLM\SYSTEM\CurrentControlSet\services\MSSQL$EXPRESS2012 /v Start /t REG_DWORD /d 2 /f
REG ADD HKLM\SYSTEM\CurrentControlSet\services\MSSQL$EXPRESS2012 /v DelayedAutostart /t REG_DWORD /d 1 /f
,以便它可以访问Fraction
类型的_numerator
和_denominator
属性。如果没有强制转换,它只能使用通用的Python查找机制来查找不允许您访问cdef
类型的任何非public
属性的属性。
它没有做任何检查,它实际上是正确的类型,所以如果你不是100%确定对象实际上是一个分数,那么你应该做cdef
而不是检查。
答案 1 :(得分:4)
这只是Cython syntax for type casting。在这种情况下,expr
正在转换为a
类型。必须使用额外的括号来表示您要转换Fraction
并获取转换值的a
属性,而不是转换_numerator
。