クラスに関する注意
pythonのクラスでは定義していない識別子(変数など)を指定すると自動的に登録されてしまう。
▼例
>>> ================================ RESTART ================================ >>> class test1: a = 0 b = 0 def testprint(self): print self.a + self.b >>> t1 = test1() >>> t1.a = 10 >>> t1.b = 10 >>> t1.c = 100 #新しくt1.cを作られてしまう。 >>> print t1.c 100これは、便利な時もあるが、バグの温床にもなりやすいので避けたいときは特殊変数__slots__を使って以下のように書く。>>> class test2(object): #objectを忘れずに。 __slots__ = ("a", "b") #変更不可のリスト(タプル)で渡す。 def testprint(self): print self.a + self.b >>> t2 = test2() >>> t2.a = 10 >>> t2.b = 10 >>> t2.c = 10 #エラーをだす。 Traceback (most recent call last): File "", line 1, in -toplevel- t2.c = 10 AttributeError: 'test2' object has no attribute 'c' 多少面倒でも、こっちの書き方で書いたほうがバグを避けられる。