へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

python 条件分岐で定義するクラスを変更する

>>> def define_classA(a):
... global A
... if a:
... class A:
... hoge = 1
... else:
... class A:
... hoge = 'h'
...
>>> define_classA(1)
>>> A.hoge
1
>>> define_classA(0)
>>> A.hoge
'h'

メソッドを変更することも可能

>>> def define_classA(a):
... global A
... class A:
... if a:
... def hoge(self):
... print('hoge')
... else:
... def hoge(self):
... print('xxxx')
...
>>> define_classA(1)
>>> A().hoge()
hoge
>>> define_classA(0)
>>> A().hoge()
xxxx