Python 基本 – クラス

Python で基本的なクラスの使用方法です。

  • クラスの作成
    • 空のクラス
    • インスタンス化
    • 変数の定義
    • 関数の定義
    • プライベートな変数・関数
  • コンストラクタ

クラスの作成

空のクラス

なにも行わない空のクラスを作成するには、以下の用にします

class EmptyClass:
    pass

インスタンス化

作成したクラスをインスタンス化するには、関数を変数に代入するように行います。

empty = EmptyClass()

変数の定義

クラスに変数を定義することが出来ます。いわゆるプロパティです。

class WordClass:
    geeting = 'hello'

インスタンス化してアクセスするには .(ドット・ピリオド) でアクセスします。

word = WordClass()
word.greeting

出力結果は以下になります。

'hello'

関数の定義

クラスに関数を定義することが出来ます。いわゆるメソッドです。作成方法は通常の関数と同様に、def を使用します。

class GreetingClass:
    def sayHello(self):
        print 'hello'  # Python 2
        print('hello') # Python 3 ~

クラス内関数の第一引数には、自分自身を表すオブジェクトが代入されています。 名前はなんでも良いのですが、Python では通例的(?)に self が使われるようです。

※Python 2 では 上の print。Python 3 では下のプリント文を使用します。

メソッドを実行するには、インスタンス名の後に.(ドット・ピリオド)、その後に通常の関数を実行するようにします。

word = GreetingClass()
word.sayHello()

出力結果は以下の用になります。

hello

プライベートな変数・関数の作成

外から完全にアクセスできない、プライベートな変数・関数を作成することが出来ないようです。代わりに、変数・関数の先頭に _(アンダーバー)を付けることで、これはプライベートなものですよ!と認識(コードを読む人が)出来るようにします。

また _(アンダーバー)を2つ付けた場合、簡単なマングリング(難号化)が行われて、_クラス名 が先頭に付加されます。(仕様的には、__で始まり__で終わらないものに対してマングリングが行われます)

class PrivateClass:
    _privateVar = 'private'
    __mangledVar = 'mangled'

上記のクラスの変数にアクセスすると以下の用になります。

pri = PrivateClass()
pri._privateVar
pri._PrivateClass__mangledVar

コンソールでの出力結果は以下になります。

'private'
'mangled'

コンストラクタ

Python のクラスで、インスタンス化したときに初期化を行う、”コンストラクタ” を定義するには __init__ という名前で関数を定義します。

class initClass:
    def __init__(self):
        print('init...')


init = initClass()  # init が出力されます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です