クラスに関する注意

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'
    
多少面倒でも、こっちの書き方で書いたほうがバグを避けられる。