from abc import abc, abstractmethod class Plant: #tworzymy jakas rosline co ma nazwe,i id. ID powiedzmy ze buraki będą miały 1, marchewki 2 itd. gleby powiedzmy tez damy 4 i beda mialy id 5-8 def __init__(self, name, ID): super().__init__() self._soil = -1 #jak tworzymy rosline to nie bedzie ona miala gleby self._name = name #to nazwa rosliny będzie np. burak1 self._id = ID #id rosliny buraki bedą miały 1, i po tym inne obiekty beda rozpoznawac ten obiekt #to jest jakbysmy usuneli obiekt zabezpieczenie, zeby gleba pozniej była wolna def __del__(self): self.leave_soil() #to sie drukuje jak zapytamy o stworzony obiekt def __str__(self): return 'Plant: %s , Soil: %s , Status: %s' % (self._name, self._soil, self._collect()) #metoda abstrakcyjna, kazda roslina ma inny czas rosniecia wiec pass @abstractmethod def collect(self): pass #nadajemy współrzędne roślince def add_coordinates(self, x, y): self._x = x self._y = y #pobieramy współrzędne roślinki def get_coordinates(self): return self._x, self._y #pobieramy id roślinki def get_id(self): return self._id #dodajemy glebe def add_soil(self, soil): self._soil = soil #zwraca czy roslinka znajduje sie w ziemii obecnie - jak nie ma gleby to znaczy ze nie jest zasadzona jeszcze albo już. def have_soil(self): return self._soil is not -1 #pobieramy jaka ma glebe, gleba tutaj będzie obiektem def get_soil(self): return self._soil #to w przypadku jak bedziemy wyciagac z ziemii roslinke def leave_soil(self): if self.have_soil(): a = self.get_soil() a.plant.remove(self) #to bedzie metoda w klasie Soil, bedzie usuwac roslinke z gleby self._soil = -1