2013-09-22 110 views
0

我正在研究熊貓庫的源代碼,因爲我想了解更多關於實現的信息。看一下系列課讓我思考一下。如果我隱藏了很多細節的類定義,像這樣:實現細節

class Series(np.ndarray, generic.PandasObject): 
    def __new__(cls, data=None, index=None, dtype=None, name=None, copy=False): 
     # some checkings 
     subarray = _sanitize_array(data, index, dtype, copy, raise_cast_failure=True) 
     return subarray 
    def __init__(self, data=None, index=None, dtype=None, name=None, copy=False): 
     pass 
    # other class methods 
def _sanitize_array(data, index, dtype=None, copy=False, raise_cast_failure=False): 
    # some more instance checks 
    subarr = np.array(arr, dtype=object, copy=copy) 
    return subarray 

這讓我所有的困惑,因爲它們都沒有被使用過的CLS參數,也沒有給超已籲請。我看不到這個代碼是如何工作的。據我瞭解,Series類應該只是一個僞裝的ndarray,因爲這是返回的。顯然我錯過了一些東西。

回答

3

在0.12中,Seriesndarray的一個子類,有很多重寫方法。這是因爲丟失:

subarr = subarr.view(Series) which makes a ``Series`` a sub-class 

在任何情況下,代碼改變了不少,所以在0.13,Series現在只是像其他熊貓對象和NDFrame一個子類,而不是ndarray一個子類。

請參閱here