Python入門から応用までの学習サイト


クラス作成

Pythonではクラスを定義しそれを作成する(インスタンス化)ことができます。クラス化する事によって様々な恩恵を得ることができ、プログラミングの幅も広がります。

3行目で「class」と記述し、後にクラス名が続きます(今回の例では「TestClass」がクラス名になります)。クラス名の後には必ず「 : 」(コロン)を付けましょう。

# -*- coding: utf-8 -*- 

class TestClass:

    def __init__(self, code, name):
        self.code = code
        self.name = name


classes = []
classes.append(TestClass(1, u'テスト1'))
classes.append(TestClass(2, u'テスト2'))

for cls in classes:
    print "===== Class ====="
    print 'code --> ' + str(cls.code)
    print 'name --> ' + cls.name

--実行結果--

===== Class =====
code --> 1
name --> テスト1
===== Class =====
code --> 2
name --> テスト2

これでクラスを定義し、クラスからインスタンスを作成し、それを利用することができました。それぞれの詳細を見ていきましょう。


5行目に「__init__」というメソッドがあります。これは特殊なメソッドで、クラスの初期化時に必ず実行されるメソッドです。クラスを利用する上での前準備のような処理を記述することが多いでしょう。もう一つの注目点として「__init__」メソッドの第一引数に「self」があります。これはクラスのインスタンス自身を表すもので、「self.xx」といった形で自身が保持する情報へアクセスする事ができます。いわゆる通常のメソッド(インスタンスメソッド)では省略する事が出来ないので、必ず書いてください。

# -*- coding: utf-8 -*- 

class TestClass:

    def __init__(self, code, name):
        self.code = code
        self.name = name


classes = []
classes.append(TestClass(1, u'テスト1'))
classes.append(TestClass(2, u'テスト2'))

for cls in classes:
    print "===== Class ====="
    print 'code --> ' + str(cls.code)
    print 'name --> ' + cls.name


続いて6、7行目では「code」と「name」という2つのインスタンス属性(インスタンス変数)を「__init__」メソッドの引数から自身のインスタンスへ引き渡しています。これらはTestClassインスタンス自身からは「self.code」や「self.name」でアクセスすることができ、クラスを作成した側からは「インスタンス名.code」や「インスタンス名.name」でアクセスすることができます(例示コードの場合は「cls.code」など)。

# -*- coding: utf-8 -*- 

class TestClass:

    def __init__(self, code, name):
        self.code = code
        self.name = name


classes = []
classes.append(TestClass(1, u'テスト1'))
classes.append(TestClass(2, u'テスト2'))

for cls in classes:
    print "===== Class ====="
    print 'code --> ' + str(cls.code)
    print 'name --> ' + cls.name


11行目と12行目でクラスのインスタンス化を行っています。クラス定義から2つインスタンスを作成し、それぞれ別の「code」と「name」を「__init__」メソッドを通して情報を保持させます。これらはインスタンスごとに異なる情報を設定することができます(例示コードでは「1 と テスト1」のインスタンスと「2 とテスト2」の情報を持つインスタンスが存在している)。

# -*- coding: utf-8 -*- 

class TestClass:

    def __init__(self, code, name):
        self.code = code
        self.name = name


classes = []
classes.append(TestClass(1, u'テスト1'))
classes.append(TestClass(2, u'テスト2'))

for cls in classes:
    print "===== Class ====="
    print 'code --> ' + str(cls.code)
    print 'name --> ' + cls.name



Python
スタートブック


入門 Python 3


Effective
Python


退屈なことは
Pythonにやらせよう

 
 
 

クラスを継承してもっと便利なクラスを作成しましょう!

▶応用編:クラス継承



確かな力が身につく
Python「超」入門




P  R