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: (
Ответы
Ответ 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)
Непонятно, что вы пытаетесь сделать, или я предлагаю, как это исправить.