以实例作为第一个参数的未绑定方法得到字符串,但需要一些els

2024-05-23 20:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

#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:必须调用未绑定方法add_animal(),并将Maps实例作为第一个参数(改为get str instance)

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


Tags: namepyimportselfaddobjectinitdef
2条回答

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

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

 mymap = maps.Map()

 mymap.add_animal("Fred") # should work

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

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

maps.Maps.add_animal(rbt)

现在还不清楚你想做什么,或者我可以提出一个如何解决的建议。

相关问题 更多 >