Object Oriented Python

ということで、ようやくオブジェクト指向です。
これはなかなか独特というか、アレですね……


アクセス修飾子とかいうんでしたっけ、
public, private, protectedみたいなやつ。
あれがありません、Python
アトリビュート(いわゆるメンバ変数のこと)とかメソッドの先頭に
・_をつけると「外から修正しないように」という主張が出来る(システム的な隠蔽ではなくただの慣習)
・__をつけると外部からはアクセスできなくなる
の二種類の方法で隠蔽が出来ます。
アトリビュートは__init__メソッド(コンストラクタ)の中で作成しますが、
動的に作成することも出来ます。


あとメソッドはselfを最初の引数にしなければなりません。
名前はselfじゃなくてもいいらしいですが、
要はobject自身が入ってくるわけですね。


んで、コードはこんな感じで書きます。

class Hoge:
	def __init__(self, hoge):
		self.hoge = hoge
		self.__hogehoge = hoge
	def getHogeHoge(self):
		return self.__hogehoge

hoge = Hoge("aaaa")
print hoge.hoge
aaaa
print hoge.__hogehoge
AttributeError
print hoge.getHogeHoge()
aaaa


JavaとかC++を知っていると異様に違和感がありますが、
郷に入っては郷に従えといいますからね……