带有实例作为第一个参数的unbound方法得到字符串但需要其他东西

时间:2012-05-18 01:01:15

标签: python oop methods

#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")

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

TypeError:必须使用Maps实例作为第一个参数调用未绑定方法add_animal()(改为使用str实例)

但我不知道这意味着什么,我无法通过谷歌或雅虎进行搜索:(

2 个答案:

答案 0 :(得分:13)

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

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

 mymap = maps.Map()

 mymap.add_animal("Fred") # should work

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

答案 1 :(得分:3)

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

的操作
maps.Maps.add_animal(rbt)

目前还不清楚你要做什么,或者我会就如何修复它提出建议。