несвязанный метод с экземпляром в качестве первого аргумента получил строку, но требует чего-то другого

#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 в качестве первого аргумента (вместо этого получен экземпляр str)

но я не знаю, что это значит, и я не могу понять это при поиске в Google или Yahoo :(

 TryPyPy18 мая 2012 г., 03:24
Как правило, импорт должен происходить в области модуля, предпочтительно сверху. Вам также нужен класс Maps из модуля maps, а не сам модуль (поэтому maps.Maps).

Ответы на вопрос(2)

что означает, что вы обращаетесь к методу из самого класса, а не из экземпляра (поэтому Python не знает, какой экземпляр следует использовать какself). Этот код не должен выдавать эту ошибку, как показано, но я предполагаю, что вы делаете что-то вроде

maps.Maps.add_animal(rbt)

Непонятно, что вы пытаетесь сделать, или я предлагаю, как это исправить.

Решение Вопроса

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

 mymap = maps.Map()

 mymap.add_animal("Fred") # should work

Поэтому у вас должен быть атрибут mymap в классе Animal, для каждого экземпляра Animal или в качестве глобального объекта (что лучше всего подходит для вашего случая).

Ваш ответ на вопрос