重複の可能性: オンザフライでサブクラスを作成する方法はありますか? クラスを動的に作成する - Python
唯一の違いがいくつかのクラス変数であるサブクラスを作成したいと思いますが、他のすべては同じままにしておきたいです。クラス変数の値は実行時にしか分からないため、これを動的に行う必要があります。
これまでのコード例をいくつか示します。FooBase.foo_var を「default」に、FooBar.foo_var を「bar」にしたいと考えています。これまでのところ、成功した試みはありません。
class FooBase(object):
foo_var = "default"
def __init__(self, name="anon"):
self.name = name
def speak(self):
print self.name, "reporting for duty"
print "my foovar is '" + FooBase.foo_var + "'"
if __name__ == "__main__":
#FooBase.foo_var = "foo"
f = FooBase()
f.speak()
foobarname = "bar"
#FooBar = type("FooBar", (FooBase,), {'foo_var': "bar"})
class FooBar(FooBase): pass
FooBar.foo_var = "bar"
fb = FooBar()
fb.speak()
どうもありがとう
編集して、明らかにこの行に問題があります:
print "my foovar is '" + FooBase.foo_var + "'"
受け入れられた答えはself.foo_var
コードにあります。それが私がすべきことです。私は今、ばかげていると感じています。