2012-05-18 8 views
10
#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") 

daje mi ten błąd, który wygląda takniezwiązany metoda z instancji jako pierwszy argument dostał ciąg ale wymaga czegoś innego

Błąd typu: metoda niezwiązana add_animal() musi być wywołana np mapach jako pierwszy argument (GOT instancja str zamiast)

ale nie wiem co to znaczy, i nie mogę zrozumieć to przeszukując google czy yahoo :(

+0

Z reguły import powinien odbywać się w zakresie modułu, najlepiej u góry. Potrzebujesz również klasy Maps z modułu map, a nie samego modułu (tak maps.Maps). – TryPyPy

Odpowiedz

13

Musisz instancję Maps, a nie mapy klasa:

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

mymap = maps.Map() 

mymap.add_animal("Fred") # should work 

Więc powinien mieć albo atrybut MyMap na klasie zwierzę, za przykład zwierząt lub jako globalnego obiektu (co działa najlepiej dla walizka).

3

dzwonisz metodę niezwiązanego, co oznacza, masz dostęp do metody z klasy sam, a nie przez instan ce (więc Python nie wie, która instancja powinna być używana jako self). Kod ten nie powinien dać ten błąd, jak pokazano, ale zakładam, że robisz coś

maps.Maps.add_animal(rbt) 

Nie jest jasne, co próbujesz zrobić, albo bym zaoferować sugestie co do sposobu rozwiązania to.

Powiązane problemy