Python.use(better) #OOP:変数〔variable〕
‖記事一覧‖ Python.use(better)《Python3.1》
OOP:変数〔variable〕
《著》真樹育未、小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第1版♪1988/05/23 ● 第2版♪2001/01/29 ● 第3版♪2009/12/15
オブジェクト指向プログラミング〔OOP〕の基本概念の理解を深めます。
※ Python1.5 で作成した例題を、Python3.1 で再構成しました。
変数を利用するということ
変数を利用することの意義について考察します。変数は、
- 任意のオブジェクトを参照する手段
を提供します。変数は、
- 関数定義における関数名の名前、
- 関数定義における引数の名前、
- クラス定義におけるクラスの名前、
- クラス定義における属性の名前、
など、すべてに共通する概念モデルを提供します。
Python 3.1 (r31:73578, Jun 27 2009, 21:49:46) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Type "copyright", "credits" or "license()" for more information.Traceback (most recent call last): File "未定義の変数を参照しようとすると、例外 NameError を生成して、エラーメッセージが出力されます。これは「変数の名前(識別子)が未定義である」ことを意味します。", line 1, in a NameError: name 'a' is not defined 変数による束縛
オブジェクトを生成するときに、必要なリソースが確保されます。これらは、オブジェクトが不要になると回収され、新たなオブジェクトを生成するために再利用されます。そのオブジェクトがまだ必要かどうかは、それを参照するもの(変数)の存在に依存します。そこで、必要なオブジェクトが回収されないように、オブジェクトを参照する術が必要になります。それを可能にするのが、変数によるオブジェクトの束縛〔binding〕です。>>> a = 345; id(a) #1 19121664 >>> a = 345; id(a) #2 19121648 >>> b = a; id(b) #3 19121648 >>> a = 345; id(a) #4 19121232 >>> id(b) 19121648■ #2:
変数 a は、既存の整数オブジェクト〈id:19121664〉を解放して、新たに生成した整数オブジェクト 345〈id:19121648〉を束縛します。これは、先に生成したオブジェクトと同じ値を持ちますが、別のオブジェクトです。このとき、整数オブジェクト〈id:19121664〉は、まだ回収されずに存在するかもしれませんが、それを参照する術がありません。そのため「存在しない」のも同然です。■ #4:
変数 a は、既存のオブジェクト〈id:19121648〉を解放して、新たに生成した整数オブジェクト 345(id:19121232)を束縛します。これは、先に生成したオブジェクトと同じ値を持ちますが、別のオブジェクトです。このとき、整数オブジェクト〈id:19121648〉は、まだ回収されずに存在します。なぜなら、変数 b によって束縛されているからです。実際に、変数 b を参照すると、既存のオブジェクト〈id:19121648〉が得られます。 》こちらに移動中です《 ↑TOP