Подтвердить что ты не робот

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

#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: unbound метод add_animal() должен быть вызван с экземпляром Maps в качестве первого аргумента (вместо этого получил экземпляр str)

но я не знаю, что это значит, и я не могу понять это через google или yahoo: (

4b9b3361

Ответ 1

Вам нужен экземпляр Maps, а не класс Maps:

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

 mymap = maps.Map()

 mymap.add_animal("Fred") # should work

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

Ответ 2

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

maps.Maps.add_animal(rbt)

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