Python15分講座 #3.5 コンストラクタについての補足


id:Yoshioriさんにコンストラクタについて補足していただきました。

Python の self とかクラスとかインスタンス変数とか
http://d.hatena.ne.jp/Yoshiori/20090716/1247720811

?インスタンスに値を追加してみる

class Hoge(object):
    pass
 
hoge = Hoge()
hoge.a = 10  # hoge に a を追加
hoge.b = 'hoge'
print hoge.a # 10 と表示される
print hoge.b # hoge と表示される

これでhogeに a と b を持たす事が出来るのはわかるよね?

わかりませんでした、というか知りませんでした!
こういうこともできるんですね。



補足を読んでみると__init__()って、インスタンス生成時に自動実行されること以外は
普通の関数なんだなと思いました。
Javaのコンストラクタは戻り値がなかったりして特別な関数って感じでしたけど。

[7/17 訂正]
コメントでご指摘を受けました。
試しに__init__で文字列をreturnしてみたところ

TypeError: __init__() should return None, not 'str'

そもそもリターンする先がないですし、コンストラクタの役割を考えれば当然ですよね。。。
誤解を招く発言をしてしまって申し訳ありませんでした!!

わかりやすい説明ありがとうございます!