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")

このようなエラーが発生します

TypeError:バインドされていないメソッドadd_animal()は、最初の引数としてMapsインスタンスを使用して呼び出す必要があります(代わりにstrインスタンスを取得します)

しかし、私はそれが何を意味するのかわかりません、そして私はそれをグーグルまたはヤフーを通して検索することを理解することができません:(

4

2 に答える 2

13

Mapsクラスではなく、Mapsのインスタンスが必要です。

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

 mymap = maps.Map()

 mymap.add_animal("Fred") # should work

したがって、Animalインスタンスごとに、またはグローバルオブジェクトとして(ケースに最適なものは何でも)、Animalクラスにmymap属性を設定する必要があります。

于 2012-05-18T01:20:23.220 に答える
3

バインドされていないメソッドを呼び出しています。つまり、インスタンスを介してではなく、クラス自体からメソッドにアクセスしています(したがって、Pythonはどのインスタンスを使用する必要があるかを認識していませんself)。このコードは示されているようにそのエラーを出すべきではありませんが、私はあなたが次のようなことをしていると思います

maps.Maps.add_animal(rbt)

あなたが何をしようとしているのかはっきりしないか、それを修正する方法について提案したいと思います。

于 2012-05-18T01:13:05.067 に答える