我正在研究 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,因为它被返回了。显然我错过了一些东西。