Python 实施细节

Python 实施细节,python,class,pandas,Python,Class,Pandas,我正在研究pandas库的源代码,因为我想了解更多关于实现的信息。看了一眼系列课,我不禁深思了一下。如果我隐藏了很多细节,那么类的定义如下: class Series(np.ndarray, generic.PandasObject): def __new__(cls, data=None, index=None, dtype=None, name=None, copy=False): # some checkings subarray = _saniti

我正在研究pandas库的源代码,因为我想了解更多关于实现的信息。看了一眼系列课,我不禁深思了一下。如果我隐藏了很多细节,那么类的定义如下:

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,因为它是返回的。显然我遗漏了一些东西。

在0.12中,
系列是
ndarray
的一个子类,有许多重写方法。您缺少:

subarr = subarr.view(Series) which makes a ``Series`` a sub-class
无论如何,代码发生了很大的变化,因此在0.13中,
系列
现在与其他熊猫对象一样,是
NDFrame
的子类,而不是
ndarray
的子类


参见0.12中的

系列
ndarray
的子类,具有许多重写方法。您缺少:

subarr = subarr.view(Series) which makes a ``Series`` a sub-class
无论如何,代码发生了很大的变化,因此在0.13中,
系列
现在与其他熊猫对象一样,是
NDFrame
的子类,而不是
ndarray
的子类