クラス変数の束を作成する必要があり、次のようなリストをループして実行したいと思います。
vars=('tx','ty','tz') #plus plenty more
class Foo():
for v in vars:
setattr(no_idea_what_should_go_here,v,0)
出来ますか?インスタンス用に (__init__ で self を使用して) 作成したくはありませんが、クラス変数として作成します。
クラス変数の束を作成する必要があり、次のようなリストをループして実行したいと思います。
vars=('tx','ty','tz') #plus plenty more
class Foo():
for v in vars:
setattr(no_idea_what_should_go_here,v,0)
出来ますか?インスタンス用に (__init__ で self を使用して) 作成したくはありませんが、クラス変数として作成します。
クラスが作成された直後に挿入コードを実行できます。
class Foo():
...
vars=('tx', 'ty', 'tz') # plus plenty more
for v in vars:
setattr(Foo, v, 0)
また、クラスの作成中に変数を動的に保存することもできます。
class Bar:
locals()['tx'] = 'texas'
何らかの理由で、クラスの作成後にそれらを設定するレイモンドの答えを使用できない場合は、おそらくメタクラスを使用できます。
class MetaFoo(type):
def __new__(mcs, classname, bases, dictionary):
for name in dictionary.get('_extra_vars', ()):
dictionary[name] = 0
return type.__new__(mcs, classname, bases, dictionary)
class Foo(): # For python 3.x use 'class Foo(metaclass=MetaFoo):'
__metaclass__=MetaFoo # For Python 2.x only
_extra_vars = 'tx ty tz'.split()