作成中のゲームでオブザーバー パターンを使用してテストしています。しかし、私はそれにいくつかの問題を抱えています。私のコードとエラーは以下のとおりです。誰か助けてもらえますか?
エラー:
File "C:\Users\Administrator\PycharmProjects\untitled\Level.py", line 112, in update
w.update()
File "C:\Users\Administrator\PycharmProjects\untitled\Entity.py", line 13, in update
self.notifyObservers()
File "C:\Users\Administrator\PycharmProjects\untitled\Observable.py", line 15, in notifyObservers
observer.update(self)
TypeError: unbound method update() must be called with Player instance as first argument (got WorldController instance instead)
レベルファイル:
self.world = [WorldController()]
for w in self.world:
w.update()
エンティティ ファイル:
class WorldController(Observable):
def __init__(self):
super(Observable, self).__init__()
self._observers = []
def update(self):
self.addObserver(Player)
self.notifyObservers()
class Entity(Observer, pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
class Player(Entity, Observer):
def __init__(self, x, y):
super(Observer, self).__init__()
Entity.__init__(self)
def update(self, observable):
print "works!"
観察可能なファイル:
class Observable(object):
def __init__(self, **kwds):
super(Observable, self).__init__(**kwds)
self._observers = []
def addObserver(self, observer):
if not observer in self._observers:
self._observers.append(observer)
def removeObserver(self, observer):
try:
self._observers.remove(observer)
except ValueError:
pass
def notifyObservers(self):
for observer in self._observers:
observer.update(self)
class Observer(object):
def __init__(self, **kwds):
super(Observer, self).__init__(**kwds)
def update(self, observable):
pass