在python中使用工厂时在实例化期间设置类变量

时间:2014-06-17 18:59:10

标签: python factory-pattern

我有一个班级工厂,非常类似于here。我想在调用createShape时设置一个创建的类可以访问的变量。你怎么做pythonicly?

例如:

foo = 'bar'
circle = ShapeFactory.createShape('circle', foo)
print circle.foo >>> bar

但是,由于createShape是静态的,我无法添加

self.foo = foo

到createShape方法。

显然,所有形状都会实现此参数。

1 个答案:

答案 0 :(得分:1)

您无法使用self执行此操作,但您仍可以使用createShape中创建的对象执行此操作。该代码在createShape中执行此操作:

return ShapeFactory.factories[id].create()

所以就这样做:

myShape = ShapeFactory.factories[id].create()
myShape.foo = foo
return myShape

但是,看一下您链接到的页面上的示例,我不能说我会推荐这种方法。该示例中描述的设计非常笨拙。

相关问题