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.