D
Davy
Hi all,
When reading Python source code of Peter Norvig's AI book, I found it
hard for me to understand the idea of slot (function nested in
function). Please see "program()" nested in "make_agent_program()",
why not use program() directly?
## http://aima-python.googlecode.com/svn/trunk/agents.py
class Agent (Object):
"""An Agent is a subclass of Object with one required slot,
.program, which should hold a function that takes one argument,
the
percept, and returns an action. (What counts as a percept or
action
will depend on the specific environment in which the agent
exists.)
Note that 'program' is a slot, not a method. If it were a method,
then the program could 'cheat' and look at aspects of the agent.
It's not supposed to do that: the program can only look at the
percepts. An agent program that needs a model of the world (and
of
the agent itself) will have to build and maintain its own model.
There is an optional slots, .performance, which is a number giving
the performance measure of the agent in its environment."""
def __init__(self):
self.program = self.make_agent_program()
self.alive = True
self.bump = False
def make_agent_program (self):
def program(percept):
return raw_input('Percept=%s; action? ' % percept)
return program
def can_grab (self, obj):
"""Returns True if this agent can grab this object.
Override for appropriate subclasses of Agent and Object."""
return False
Best regards,
Davy
When reading Python source code of Peter Norvig's AI book, I found it
hard for me to understand the idea of slot (function nested in
function). Please see "program()" nested in "make_agent_program()",
why not use program() directly?
## http://aima-python.googlecode.com/svn/trunk/agents.py
class Agent (Object):
"""An Agent is a subclass of Object with one required slot,
.program, which should hold a function that takes one argument,
the
percept, and returns an action. (What counts as a percept or
action
will depend on the specific environment in which the agent
exists.)
Note that 'program' is a slot, not a method. If it were a method,
then the program could 'cheat' and look at aspects of the agent.
It's not supposed to do that: the program can only look at the
percepts. An agent program that needs a model of the world (and
of
the agent itself) will have to build and maintain its own model.
There is an optional slots, .performance, which is a number giving
the performance measure of the agent in its environment."""
def __init__(self):
self.program = self.make_agent_program()
self.alive = True
self.bump = False
def make_agent_program (self):
def program(percept):
return raw_input('Percept=%s; action? ' % percept)
return program
def can_grab (self, obj):
"""Returns True if this agent can grab this object.
Override for appropriate subclasses of Agent and Object."""
return False
Best regards,
Davy