わからんリスト

わからんことはここに書く

  • クラス変数の参照
>>> class SuperHoge(object):
...     str = 'hoge'
...     def print1(self):
...             print self.str
...     def print2(self):
...             print SuperHoge.str
...
>>> class Hoge(SuperHoge):
...     def setStr1(self, str):
...             self.str = str#インスタンス変数が生成
...     def setStr2(self, str):
...             Hoge.str = str#Hogeのクラス変数が生成
...
>>> hoge = Hoge()
>>> hoge.setStr1('instance')
>>> hoge.print1()
instance
>>> hoge.print2()
hoge
>>> fuga = Hoge()
>>> fuga.setStr2('fugafuga')
>>> fuga.print1()
fugafuga
>>> fuga.print2()
moge
>>> Hoge.__dict__.items()
[('__module__', '__main__'), 
('setStr1', <function setStr1 at 0x684365a4>),
('setStr2', <function setStr2 at 0x684365dc>),
('str', 'fugafuga'), ('__doc__', None)]

親クラスでクラス変数を参照するときはselfで、子クラスで修正とかするときは子クラス名?どー考えてもおかしい!