2012年8月30日木曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のVI部(クラスとオブジェクト指向プログラミング)の24章(クラスのコーディング(詳細))3を解いてみる。

3.

クラス属性になる。クラス属性、インスタンス属性に値を代入していってどうなるか実際に見てみる。

コード(TextWrangler)

sample.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

class A:
 data = 10

class B:
 data = 10
 def __init__(self,data):
  self.data = data

if __name__ == "__main__":
 a = A()
 b = A()
 l = [A,a,b]
 def f():
  for x in l:
   print(x.data,x)
  print()
 f()
 A.data = 20
 f()
 a.data = 30
 f()
 b.data = 40
 f()
 
 a = B(20)
 b = B(30)
 l = [B,a,b]
 f()
 B.data = 40
 f()
 a.data = 50
 f()
 b.data = 60
 f()

入出力結果(Terminal)

$ ./sample.py
10 <class '__main__.A'>
10 <__main__.A object at 0x10c04ab50>
10 <__main__.A object at 0x10c04ab90>

20 <class '__main__.A'>
20 <__main__.A object at 0x10c04ab50>
20 <__main__.A object at 0x10c04ab90>

20 <class '__main__.A'>
30 <__main__.A object at 0x10c04ab50>
20 <__main__.A object at 0x10c04ab90>

20 <class '__main__.A'>
30 <__main__.A object at 0x10c04ab50>
40 <__main__.A object at 0x10c04ab90>

10 <class '__main__.B'>
20 <__main__.B object at 0x10c04abd0>
30 <__main__.B object at 0x10c04ac50>

40 <class '__main__.B'>
20 <__main__.B object at 0x10c04abd0>
30 <__main__.B object at 0x10c04ac50>

40 <class '__main__.B'>
50 <__main__.B object at 0x10c04abd0>
30 <__main__.B object at 0x10c04ac50>

40 <class '__main__.B'>
50 <__main__.B object at 0x10c04abd0>
60 <__main__.B object at 0x10c04ac50>

$

0 コメント:

コメントを投稿