Pythonでクラスを作ってみた。
前回まで
ラズパイのCPU温度を計測したい→Fusion Tables API→OAuth2.0→google-api-python-client
→Python
Pythonインタプリタの対話モードを実行してみた
Pythonのモジュールとパッケージを作ってみた
Pythonで関数を作ってみた
開発環境
- Windows XP Pro SP3 32bit
- cmd.exe(ConEmu/Nyagos)
- Python 2.7.10
- Python 3.4.4
成果物
クラス
class ClassName: def __init__(self): self.memberVar = 100 def _private_method(self): return None def public_method(self): return None
C++で書くと以下のようになる。
class ClassName { public: ClassName(); ~ClassName(); int PublicMethod(); private: int var; int PrivateMethod(); }; ClassName::ClassName() { var = 100; } int ClassName::PublicMethod() { return 0; } int ClassName::PrivateMethod() { return 0; }
Pythonが楽というより、C++が異常に面倒。Pythonにも面倒なところがある。「メソッドの第一引数にself
が必須」なところ。
コンストラクタ
__init__
という関数名は固定らしい
面倒なことはない。そのルールを覚えればいいだけ。変数の宣言と初期化が一緒にできるからC++より楽。
selfがウザい
こちらで詳しく説明されていた。感謝。しかし、Pythonの基礎を理解していない私には難しすぎた。
こちらのほうが、いや、やっぱり難しい。
メソッドをコールバック関数として渡すのが非常に簡単になる
わかりそうでわからない。基礎知識がなくて理解できず。
クラスの使いどころ
単純な使い方だけしたければモジュールと関数を使ったほうが楽そう。
クラスの使いどころはどこなのか。今わかるのは、「異なる状態を持たせたいとき」くらい。それってC言語でいう構造体の認識でしかない。クラスはもっと複雑なはず。しっかり把握するには、オブジェクト指向やPythonの仕様をもっと知る必要があるだろう。クラスは書けたけど、使いこなせる気がしない。
所感
細かいことは放置。これで大枠は作れるだろう。あとは分からなくなったときに調べればいいや。