一つのファイルに二つのクラスが存在していて、一つのクラスのメソッドの中でもう片方のクラスのメソッドを呼び出したい場合の表現がわからないので教えていただきたいです。
参考書には以下のFieldクラスのmoveDrunkメソッドの中でLocationクラスのmoveメソッドを用いる場合、moveメソッドがLocationクラスであることを明示せずにcurrentLocation.move(xDist,yDist)と書いているのですが、同じファイルに属している場合はこのように表現するのは当たり前のことなのでしょうか?
どうぞよろしくお願い致します。
class Location(object): def __init__(self,x,y): self.x, self.y=x, y def move(self,deltax, deltay): return Location(self.x+deltax, self.y+deltay) def getX(self): self.x def getY(self): self.y def distFrom(self,other): ox,oy=other.x, other.y xDist, yDist=self.x-ox, self.y-oy return (xDist**2+yDist**2)**0.5 def __str__(self): return '<'+str(self.x)+', '+str(self.y)+'>' class Field(object): def __init__(self): self.drunks={} def addDrunk(self, drunk, loc): if drunk in self.drunks: raise ValueError('Duplicate drunk') else: self.drunks[drunk]=loc def moveDrunk(self, drunk): if drunk not in self.drunks: raise ValueError('Drunk not in filed') xDist, yDist = drunk.takeStep() currentLocation = self.drunks[drunk] self.drunks[drunk]=currentLocation.move(xDist,yDist) def getLoc(self, drunk): if drunk not in self.drunks: raise ValueError('Drunk not in field') return self.drunks[drunk]
ソースコードは読めるように引用しましょう https://teratail.com/help/question-tips#questionTips3-5
質問内のコードは次のリンクを参照して、markdownで記述するようにしましょう。シンタックスハイライトがついてコードが読みやすくなりますし、折りたたみが可能になるため中略という記述が不必要になります。https://teratail.com/help#about-markdown
ご指摘ありがとうございます、コードが読めるように修正致しました。
回答1件
あなたの回答
tips
プレビュー