如何让多个子类在父类的约束中运行

时间:2012-05-13 16:23:42

标签: python

我是编程新手,我正在阅读一本python书。我想让多个机器人在地图中运行。地图中将有多个Robot(s)。我需要对地图类做些什么让它以这种方式工作?我知道这很模糊,但我14岁,并努力解释这一点。

class Map:

    def __init__(self):
        self.robot = []

    def add_robot(self, robot):
        self.robot.add(Robot)

    def is_occupied(self, x, y):
        for r in self.robot:
            if r.xpos == x and r.ypos == y:
                return True
        return False


class Robot(Map):

    def __init__(self):
        self.xpos = 0
        self.ypos = 0

    def step(self, axis):
        if axis in "xX":
            if self.is_occupied(self.xpos+1, self.ypos):
                self.xpos += 1 
                print "step X axis"
        elif axis in "yY":
            self.ypos += 1

    def walk(self, axis, steps=2):
        for i in range(steps):
            self.step(axis)

    def get_pos(self):
        print "X:%i  Y:%i" % (self.xpos, self.ypos)


robot1 = Robot()
robot1.walk("x", 5)
robot1.get_pos()

如果我没有'Map'类,这可以正常工作但我无法使地图类工作。我得到了帮助制作地图课程,但我无法使用我的机器人课程。

1 个答案:

答案 0 :(得分:0)

您有Robot作为Map的子类;这不是应该如何使用继承。想想“子类”而不是“子类”。

考虑一下:

class Animal:

    def eat(self, food):
        print "mmm"


class Human(Animal):

    def speak(self, words):
        print words

人类是动物;它可以说话,但它可以吃。

机器人显然不是地图。我相信你正在考虑一个有机器人的地图,如果你让Robot不是一个子类,它应该可以工作。哦,并将self.robot更改为self.robots