2009年10月23日金曜日

クラスの引数として、インスタンスを使う

クラスで構成されるPythonで、既存のクラスの再利用を考えると、クラスにメソッドを作り、その引数として、インスタンスを利用できるようになると、便利です。 以下のように、クラスTest1のインスタンスtest1を、クラスTest2の引数として使ってみる。

#クラスTest1のインスタンス test1には、アトリビュートmojiに "moji が入っている。
class Test1(object):
def __init__(self):
self.moji ="moji"
>>> test1 = Test1()
>>> print test1.moji
moji

#クラスの引数は、object. 使用するメソッドには、引数として インスタンス test1を入れる。
class Test2(object):
def __init__(self, test1):
self.test1 = test1
print test1.moji
print self.test1.moji

#インスタンスtest2 を作るときに、クラスにインスタンスtest1 を代入すると
>>> test2 = Test2(test1)
moji
moji

#もっと一般化すると, メソッドの引数を、、、、


class Test2(object):
def __init__(self, item):
self.item = test1
print self.item.moji

>>> test2 = Test2(test1)
moji

#もっと一般化すると, メソッドの引数を、、、、
class Test2(object):
def show(self,item):
self.item = test1
print self.item.moji
>>> test2 = Test2()
>>> test2.show(test1)
moji

#もっと一般化して、アプリケーションっぽく、、、これで使えるね。
class Test2(object):
def input(self,item):
self.item = test1
def show(self):
print self.item.moji
>>> test2 = Test2()
>>> test2.input(test1)
>>> test2.show()
moji