Pythonを学ぼう

fdd05038 anonymous 2011-10-06 21:10
半年経った今、>>98834f95をノリノリに書き直してみよう。
まず1行目。これはいいよな?
クラスって階級って意味(AクラスとかBクラスとかのあれ)で、これ自体は抽象的。
ポケモンの例えばピカチュウという種族、を想像してほしい。
このクラスからオブジェクトを一つずつ具体的に夜に送り出した(生成)のがインスタンスだ。
種族「ピカチュウ」は<属性>として自分の名前、レベル、覚えている技のリスト、
それからとることのできる行動として鳴くことと技を繰り出すことがあるとする。
クラスを作るには次にように書く。

class Pikachu(Pokemon):
    def __init__(self, name, level, wazaList):
        self.name = name
        self.level = level
        self.wazaList = wazaList
    def naku(self):
        print "#$%&'*@!"
    def waza(self, num)
        return self.wazaList[num]()

ピカチュウはピカチュウでも、レベルが100の、名前「やるお」、覚えてる技が
[「でんきショック」,「体当たり」,「雷」,「自爆」]。こういう<属性>を持ったオブジェクトを生成(メモリにカキコ)し、(いつでも使えるよう)変数aとかbとかに代入したいとする。

a = Pikachu('Yaruo', 100, [DenkiShock,Taiatari,Kaminari,Jibaku])
a.waza[0]()

これを実行すると、上の方のプログラムの関数(オブジェクト指向のやり方ではメソッドと呼ぶ)__init__に引数が全部渡されて実行される。
これをコンストラクタという。
ここのselfというのは、インスタンス自身のこと。つまり、インスタンスの属
性やメソッド、インスタンスの内側に範囲が絞られる場面においてはselfが出る。
作ったインスタンスは、Cの構造体のように扱ったり、メソッドを呼び出しできる。
あとは決して難しくないから自分でがんばれ。

Top of this page. | <<last

limit: 15360KB

(Pythonを学ぼう/67/0.2MB)


Powered by shinGETsu.