pandas.Series を継承する新しいクラスを作成したいと思います。通常、Python で子クラスを作成するのに問題はありませんが、この場合は問題があります。
簡単な継承スキームを次に示します。
class Test(object):
def __new__(cls, *args, **kwargs):
print "new Test"
return object.__new__(cls, *args, **kwargs)
def __init__(self):
print "init Test"
class A(Test):
def __new__(cls, *args, **kwargs):
print "new A"
return Test.__new__(cls, *args, **kwargs)
def __init__(self):
print "init A"
print "creating an instance of A"
a = A()
print "type: ", type(a)
出力:
creating an instance of A
new A
new Test
init A
type: <class '__main__.A'>
シリーズで試してみましょう:
import pandas as pd
class subSeries(pd.Series):
def __new__(cls, *args, **kwargs):
print "new subSeries"
return pd.Series.__new__(cls, *args, **kwargs)
def __init__(self):
print "init subSeries"
print "creating an instance of subSeries"
s = subSeries()
print "type: ", type(s)
そして、次のようになります。
creating an instance of subSeries
new subSeries
type: <class 'pandas.core.series.Series'>
なぜs
サブシリーズではなくシリーズなのですか?