我有一个班级工厂,非常类似于here。我想在调用createShape时设置一个创建的类可以访问的变量。你怎么做pythonicly?
例如:
foo = 'bar'
circle = ShapeFactory.createShape('circle', foo)
print circle.foo >>> bar
但是,由于createShape是静态的,我无法添加
self.foo = foo
到createShape方法。
显然,所有形状都会实现此参数。
答案 0 :(得分:1)
您无法使用self
执行此操作,但您仍可以使用createShape
中创建的对象执行此操作。该代码在createShape
中执行此操作:
return ShapeFactory.factories[id].create()
所以就这样做:
myShape = ShapeFactory.factories[id].create()
myShape.foo = foo
return myShape
但是,看一下您链接到的页面上的示例,我不能说我会推荐这种方法。该示例中描述的设计非常笨拙。