I really need an example of a builder pattern in python, the closest I
could find to something resembling builder was on this thread...
http://groups.google.co.uk/group/it.comp.lang.python/browse_thread/thread/44f79c1def2583ca/200adefeefa5f3fa?lnk=st&q=design+pattern+builder+python+-build&rnum=25#200adefeefa5f3fa
Unfortunately I can't read the discussion it's possibly in Spanish.
Does anyone know of a builder example for python? Thanking you in
advance for your help.
Jason
> Hi
>
> I really need an example of a builder pattern in python, the closest I
> could find to something resembling builder was on this thread...
>
http://groups.google.co.uk/group/it.comp.lang.python/browse_thread/threa
d/44f79c1def2583ca/200adefeefa5f3fa?lnk=st&q=design+pattern+builder+pyth
on+-build&rnum=25#200adefeefa5f3fa
>
> Unfortunately I can't read the discussion it's possibly in Spanish.
No, the leading 'it' in the newsgroup name means 'italian'. I was one
of the discussants.
> Does anyone know of a builder example for python? Thanking you in
> advance for your help.
The *example* is right there, e.g. at
<http://groups.google.co.uk/group/it.comp.lang.python/msg/4edfee13b6fb51
6f> for the Python translation of the example found at a URL quoted in
the same post. If you want an EXAMPLE, there it is -- it's all code, no
comments, so the fact that the following discussion is in Italian should
be irrelevant, no?
What the following discussion says is that the C++ -> Python
transliteration is totally trivial and obvious and berates the original
requestor for making me waste 10 minutes to provide it.
Alex
Thanks for the giggle :-)
class FindMinima:
def algorithm(self):raise NotImplementedError
class LeastSquares (FindMinima):
def algorithm(self,line):
return (1.1,2.2)
class NewtonsMethod (FindMinima):
def algorithm(self,line):
return (3.3,4.4)
class Bisection (FindMinima):
def algorithm(self,line):
return (5.5,6.6)
class ConjugateGradient (FindMinima):
def algorithm(self,line):
return (3.3,4.4)
class MinimaSolver: # context class
strategy=''
def __init__ (self,strategy):
self.strategy=strategy
def minima(self,line):
return self.strategy.algorithm(line)
def changeAlgorithm(self,newAlgorithm):
self.strategy = newAlgorithm
def test():
solver=MinimaSolver(LeastSquares())
print solver.minima((5.5,5.5))
solver.changeAlgorithm(Bisection())
print solver.minima((5.5,5.5))
test()
When most of your code does nothing in a pompous way that is a sure sign
that you are heading in the wrong direction. Here's a translation into
python:
def least_squares(line):
return 1.1, 2.2
def newtons_method(line):
return 3.3, 4.4
def bisection(line):
return 5.5, 6.6
def conjugate_gradient(line):
return 3.3, 4.4
def test():
solver = least_squares
print solver((5.5,5.5))
solver = bisection
print solver((5.5,5.5))
test()
Peter