【发布时间】:2013-10-26 15:55:15
【问题描述】:
可能的重复: Is there a way to create subclasses on-the-fly? Dynamically creating classes - Python
我想创建一个子类,其中唯一的区别是一些类变量,但我希望其他一切都保持不变。我需要动态地执行此操作,因为我只知道运行时的类变量值。
这是到目前为止的一些示例代码。我希望 FooBase.foo_var 为“默认”,但 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()
非常感谢
EDIT 所以我显然对这一行有问题:
print "my foovar is '" + FooBase.foo_var + "'"
接受的答案在代码中有self.foo_var。这就是我应该做的。我现在觉得很可笑。
【问题讨论】:
标签: python-2.7 dynamic subclassing