Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Builder Pattern

42 views
Skip to first unread message

Jason

unread,
Jan 28, 2006, 7:37:26 PM1/28/06
to
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/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

Alex Martelli

unread,
Jan 28, 2006, 9:38:45 PM1/28/06
to
Jason <sub...@gmail.com> wrote:

> 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

Paddy

unread,
Jan 29, 2006, 6:54:41 AM1/29/06
to
> 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.

Thanks for the giggle :-)

Jason

unread,
Feb 2, 2006, 7:24:11 AM2/2/06
to
I have converted another example of strategy which I prefer to the 2
described earlier, here it is:

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()

Peter Otten

unread,
Feb 2, 2006, 7:50:33 AM2/2/06
to
> I have converted another example of strategy which I prefer to the 2
> described earlier, here it is:
>
> class FindMinima:
>         def algorithm(self):raise NotImplementedError

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

0 new messages