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