from abc import ABC, abstractmethod class Plant: def __init__(self, name, collect=0): super().__init__() self._soil = -1 # jak tworzymy rosline to nie bedzie ona miala gleby self._name = name # to nazwa rosliny będzie np. burak self._collect = collect # nowa roslina jest domyślnie w 0% dojrzala # to sie drukuje jak zapytamy o stworzony obiekt def __str__(self): return f'Plant: {self._name}, Soil: {self._soil}, Status: {self.collect()}' # metoda abstrakcyjna, kazda roslina ma inny czas rosniecia wiec pass @abstractmethod def collect(self): pass @abstractmethod def fertillizing(self): pass # pobieramy wspolrzedne roslinki def get_coordinates(self): if self.have_soil(): a = self.get_soil() a.get_coordinates(self) # get coordinates jest metoda w glebie def get_name(self): return self._name def get_collect(self): return self._collect # 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(): self._soil = -1