Apr-29-2020, 06:54 PM
I have a class called World, another one called Fish. Fish is not a child of World, and I want to call the method getMaxX() and getMaxY() into the Fish class, but I get attribute errors. How Can I Call getMaxX() and getMaxY() from World class into Fish class?
What should go there instead of ??? I tried World.getMaxX(), self.__world.getMaxX(), etc. Nothing worked. I'm getting an attribute error saying the Fish doesn't have any world attribute or the missing positional argument:self error.
class World:
def __init__(self, mX, mY):
self.__maxX = mX
self.__maxY = mY
self.__thingList = []
self.__grid = []
.....
def getMaxX(self):
return self.__maxX
def getMaxY(self):
return self.__maxY
#Now here is the Fish class
class Fish(LifeForm):
def __init__(self):
super().__init__("Fish.gif")
self.__breedTick = 0
self.__starveTick = 0
...
def liveALittle(self):
offsetList = [(-1,1), (0,1), (1,1),
(-1,0), (1,0),
(-1,-1),(0,-1),(1,-1)]
adjFish = 0 #count adjacent Fish
for offset in offsetList:
newX = self.getX() + offset[0]
newY = self.getY() + offset[1]
if 0 <= newX < ??????????????? and \
0 <= newY <????????????????????):
if (not World.emptyLocation(newX, newY)) and \
isinstance(World.lookAtLocation(newX, newY), Fish):
adjFish = adjFish + 1
if adjFish >= 2: #if 2 or more adjacent Fish, die
World.delThing()
else:
self.__breedTick = self.__breedTick + 1
if self.__breedTick >= 12: #if alive 12 or more ticks, breed
self.tryToBreed()
... What should go there instead of ??? I tried World.getMaxX(), self.__world.getMaxX(), etc. Nothing worked. I'm getting an attribute error saying the Fish doesn't have any world attribute or the missing positional argument:self error.
