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