Pythonチュートリアル(その9)

9章 クラス
クラスは、データと機能をひとまとめの者にする方法
クラスインスタンスは、属性とメソッドを持つ

・Pythonのスコープと名前空間
名前空間とは、名前とオブジェクトの対応付け(マッピング)のこと
異なる名前空間動詞の名前には一切のかかわりがない
スコープとは、ある名前空間から直接アクセスできる、プログラムテキスト上の範囲のこと
もっとも内側にあり、最初に検索されるのは、ローカル名の入ったスクープ
これらを取り囲む関数がある場合、その名前空間もサイ内のスコープから順に検索される、ここに非ローカル、かつ日グローバルな名前が入っている
最後から2番目に検索されるスコープには、いまいるモジュールのグローバルな名前が入っている
もっとも外側のスコープ(最後に検索sareru)は、ビルトイン名の入った名前空間だある

・スコープと名前空間の例

scope_test()
print(“In global scope:”, spam)

def scope_test():
    def do_local():
        spam = “local spam”
    def do_nonlocal():
        nonlocal spam
        spam = “nonlocal spam”
    def do_global():
        global spam
        spam = “global spam”
    spam = “test apam”
    do_local()
    print(“After Local assignment:”, spam)
    do_nonlocal()
    print(“After nonLocal assignment:”, spam)
    do_global()
    print(“After global assignment:”, spam)
scope_test()
print(“In global scope:”, spam)
      ↓

After Local assignment: test apam After nonLocal assignment: nonlocal spam After global assignment: nonlocal spam In global scope: global spam

・クラス定義の構文
class ClassName:
<文-1>



<文-2>
#クラス定義を有効化するためには一度実行する必要がある

・クラスオブジェクト
クラスオブジェクトは、属性参照とインスタンス化をサポートする
ex.
class

MyClass:
“””A simple example class”””
i = 12345                                 #MyClass.i(属性参照)、整数オブジェクト

def f(self):                                #MyClass.f(属性参照) 、関数オブジェクト
ruturn ‘hekko world’

インスタンス化  x = MyClass()
__init__() メソッドを定義すると新規生成されたインスタンスに対し、__init__() メソッドが自動的に初期化される

・クラス変数とインスタンス変数
クラス変数はあるクラスのすべてのインスタンスが共有する属性やメソッド
インスタンス変数は、それぞれのインスタンスに固有

・継承
ex.
class DerivedclassName(BaseClassName):
<文-1>



<文-2>

aseClassName(基底クラス名)

 

参考にした書籍
タイトル:Pythontチュートリアル 第4版
著者:Cuido van Rossum
訳者:鴨澤 眞夫
発行所:株式会社 オイラリー・ジャパン

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください