あなたはそれをスターターとして使ってみることができます:
class Mine(unicode):
#
def __init__(self, *args, **kwargs):
super(Mine, self).__init__(*args, **kwargs)
#
def __setattr__(self, attr, value):
try:
super(Mine, self).__setattr__(attr, value)
except AttributeError:
self.__dict__[attr] = value
#
def __getattr__(self, attr):
try:
super(Mine, self).__getattr__(attr)
except AttributeError:
try:
return self.__dict__[attr]
except KeyError:
raise AttributeError
def __getitem__(self, item):
obj = Mine(super(Mine, self).__getitem__(item))
obj.__dict__ = self.__dict__
return obj
もちろん、特定のsplit
メソッドを作成する必要があります。ここで、出力リストの各項目はMine
オブジェクトになります。
def split(self, arg=' '):
result = []
for item in super(Mine, self).split(arg):
i = Mine(item)
i.__dict__ = self.__dict__
result.append(i)
return result
一般的な考え方は、親クラスのすべてのメソッド(少なくとも、本当に関心のあるメソッド)をオーバーロードして、クラスのインスタンスを返し、__dict__
呼び出し元のインスタンスを継承することです...これは多くの場合があります仕事。