Doesn't know what it wants

John Machin sjmachin at lexicon.net
Sat Jan 26 08:52:54 CET 2008


On Jan 26, 6:25 pm, Steven D'Aprano <st... at REMOVE-THIS-
cybersource.com.au> wrote:
> On Fri, 25 Jan 2008 22:53:16 -0800, John Machin wrote:
> > On Jan 26, 5:32 pm, Jeroen Ruigrok van der Werven <asmo... at in-
> > nomine.org> wrote:
> >> -On [20080126 06:26], Tim Rau (bladedpeng... at gmail.com) wrote:
>
> >> >Line 147 reads:
> >> >        moi = cp.cpMomentForCircle(self.mass, .2, 0, vec2d((0,0)))
>
> >> I think it expects something like:
>
> >> # badly named variable, pick something better depending on context
> >> temp = vec2d(0, 0)
> >> cp.cpMomentForCircle(self.mass, .2, 0, temp)
>
> > That *cannot* give a different result in Python. The called function
> > will be presented with *exactly* the same object as the OP's code does.
>
> Not quite. Look carefully at the difference.
>
> The OP's code calls vec2d with a single tuple argument (0,0). Jeroen's
> version calls vec2d with two int arguments, 0 and 0.
>
> We don't know whether vec2d will treat those two things the same or not.

That was Jeroen's 2nd problem; I was addressing his first problem
(thinking that introducing a temp variable would work some magic).

Google is your friend:
"""
class vec2d(ctypes.Structure):
    """2d vector class, supports vector and scalar operators,
       and also provides a bunch of high level functions
       """
    __slots__ = ['x', 'y']

    def __init__(self, x_or_pair, y = None):

        if y == None:
            self.x = x_or_pair[0]
            self.y = x_or_pair[1]
        else:
            self.x = x_or_pair
            self.y = y
"""



More information about the Python-list mailing list