345449.vhj5l3oj7.asia ShapeFactory1.py 2001-12-26T16:00:00Z 2001-12-26T16:00:00Z <br/><TEXTAREA name="code" class="py" rows="16" cols="100">#: c05:shapefact1:ShapeFactory1.py # A simple static factory method. from __future__ import generators import random class Shape(object): # Create based on class name: def factory(type): #return eval(type + &quot;()&quot;) if type == &quot;Circle&quot;: return Circle() if type == &quot;Square&quot;: return Square() assert 1, &quot;Bad shape creation: &quot; + type factory = staticmethod(factory) class Circle(Shape): def draw(self): print &quot;Circle.draw&quot; def erase(self): print &quot;Circle.erase&quot; class Square(Shape): def draw(self): print &quot;Square.draw&quot; def erase(self): print &quot;Square.erase&quot; # Generate shape name strings: def shapeNameGen(n): types = Shape.__subclasses__() for i in range(n): yield random.choice(types).__name__ shapes = \ [ Shape.factory(i) for i in shapeNameGen(7)] for shape in shapes: shape.draw() shape.erase() #:~</TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2001-12-26T16:00:00Z