開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs(Text Editor)
- プログラミング言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のIV部(クラスとオブジェクト指向プログラミング)、23章(クラスのコーディング (基礎))の練習問題を解いてみる。
その他参考書籍
1.
モジュールの中にクラスがある。
例: sampleモジュールのAクラス。
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- class A: pass
2.
インスタンスを作るにはクラスを呼び出せばいい。クラスをツルルにはclassステートメントを使えばいい。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- # クラスの作成 class A: def __init__(self): print("Hello, Instance!") # インスタンスの作成 i = A()
入出力結果(Terminal)
$ ./sample.py Hello, Instance! $
3.
クラスの属性は、classステートメントの中で定義する。後から追加することも出来る。
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- # クラスの作成 class A: # クラスの属性 a = "spam" def f(): print("Hello, f!") print(A.a) A.f() # 属性の追加 A.b = "egg" print(A.b) # 上書きも出来る A.a = "foo" def g(): print("Hello, g!") A.f = g print(A.a) A.f()
入出力結果(Terminal)
$ ./sample.py spam Hello, f! egg foo Hello, g! $
4.
インスタンス属の属性は、クラスステートメントの中のメソッド(第1引数はself(インスタンス自身。慣例でselfなだけで、なんでもいい)の中で作る。
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- # クラスの作成 class A: def __init__(self, data): # インスタンス属性の作成 self.a = "Hello, World!" self.b = data def f(self, data): self.c = data self.d = "foo" a = A("spam") print(a.a, a.b) a.f("egg") print(a.c, a.d)
入出力結果(Terminal)
$ ./sample.py Hello, World! spam egg foo $
5.
selfはインスタンスオブジェクトを意味する。
6.
対応するメソッドを上書きすればいい。
例: +演算子をオーバーロードして掛け算にする。(本来は意味の無い、良くないオーバーロード。機能確認のため。)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- # クラスの作成 class A(int): def __add__(self, y): return self * y a = A(5) print(a + 10)
入出力結果(Terminal)
$ ./sample.py 50 $
7.
クラスのインスタンスオブジェクトに、自然な演算を定義するため。
8.
__init__メソッド。
9.
第1引数selfと__init__メソッド。
0 コメント:
コメントを投稿