10
#Maps.py
class Maps(object):

    def __init__(self):
        self.animals = []
        self.currently_occupied = {}

    def add_animal(self, name):
        self.animals.append(name)
        self.currently_occupied = {robot:[0, 0]}



#animal.py
class Animal(object):

    def __init__(self, name):
        import maps
        maps.add_animal(rbt)
        self.name = name


#Tproject.py
from Animal import Animal
Fred = Animal("Fred")

给了我一个看起来像这样的错误

类型错误:必须使用 Maps 实例作为第一个参数调用未绑定的方法 add_animal()(改为获取 str 实例)

但我不知道这是什么意思,我无法通过谷歌或雅虎搜索:(

4

2 回答 2

13

您需要一个 Maps 实例,而不是 Maps 类:

 maps.Maps.add_animal("Fred") # gives error

 mymap = maps.Map()

 mymap.add_animal("Fred") # should work

因此,您应该在 Animal 类、每个 Animal 实例上或作为全局对象具有 mymap 属性(无论哪种方式最适合您的情况)。

于 2012-05-18T01:20:23.220 回答
3

您正在调用未绑定的方法,这意味着您正在从类本身访问方法,而不是通过实例(因此 Python 不知道应该将哪个实例用作self)。这段代码不应该给出如图所示的错误,但我假设你正在做类似的事情

maps.Maps.add_animal(rbt)

目前尚不清楚您要做什么,或者我会就如何解决它提出建议。

于 2012-05-18T01:13:05.067 回答