Jasper wrote:

I'm stumped.  I'm calling a method that has keyword args, but not
setting them, and yet one of them starts off with data?!

The class definition begins like so:

class BattleIntentionAction( BattleAction ):
    def __init__( self, factionName, location, tactic='hold',
targetFacName='', terrainArgs=[], garrisonIds=[] ):
        self.terrainArgs = terrainArgs
        print terrainArgs

The constructor is called somewhere else, like so:
act = BattleIntentionAction( facName, self.location )

During this object's construction, terrainArgs is set to a list with
values corresponding to a previously created BattleIntentionAction!

default argument values are evaluated when the function object is created (by the "def" statement, that is), not when the resulting function is called. if you mutate the default values, the mutations will stick.

this is explained in the FAQ, the tutorial, and the reference manual, and hopefully in your favourite python book as well; see e.g.

   http://docs.python.org/tut/node6.html#SECTION006710000000000000000
   http://docs.python.org/ref/function.html

</F>

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to