2017-06-21 55 views
1

我一直在尋找通過quicktions分庫,我發現這個用Cython語法我以前從未見過:怪用Cython語法

an, ad = (<Fraction>a)._numerator, (<Fraction>a)._denominator 

是什麼(<Fractions>a)代表什麼?這似乎是某種內存分配。但是,我不確定。

回答

5

It's a type cast.

它確保用Cython的對象真的是一個Fraction,以便它可以訪問cdef類型的_numerator_denominator屬性。如果不投它只能使用通用的Python查找機制找到它不允許你訪問cdef類型的任何非public屬性的屬性。

它不會做任何檢查,它實際上是正確的類型,所以如果你不是100%確定該對象實際上是一小部分,那麼你應該做<Fraction?>而不是檢查。

4

這僅僅是Cython syntax for type casting。在這種情況下,a正在轉換爲Fraction類型。額外的括號是必需的,它要投a和獲得鑄造價值的_numerator財產,不投a._numerator

+1

這個答案是22秒快,我認爲,讓所有的事情都是平等接受這一個:) – DavidW

+1

@DavidW欣賞它:)此致提供了一些額外的信息,但這樣它可能_correcter_。 – jdehesa

+0

誰先獲得7票勝利! – MLhacker