Pythonでフィールドを定義するときに他言語と合わせて クラスブロックに入れてみた場合とコンストラクタに入れてみた場合を比較してみた。 i = 0 def func(): global i i = i + 1 return i class Person: vals1 = func() #field define def __init__(self): print '[Person.__init__]' self.vals2 = func() #costruct print "finished compile." func() info = Person() print info.vals1, info.vals2 del info info = Person() print info.vals1, info.vals2結果 finished compile. [Person.__init__] 1 3 [Person.__init__] 1 4 どうやらクラスブロックにフィールドを指定したら、コンパイル時に プリプロセスされてしまってスカラーに変換されてるっぽい。 PR |
|
忍者ブログ [PR] |