実装についてもっと知りたいので、pandas ライブラリのソース コードを調べていました。Series クラスを見て、少し考えさせられました。多くの詳細を非表示にすると、クラスは次のように定義されます。
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 である必要があります。これは、それが返されたためです。明らかに私は何かが欠けています。