2009年10月23日金曜日

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

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

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

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

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

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

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

>>> test2 = Test2(test1)
moji

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

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