#7 gna
Třída VerbParserTranspose je závislá na rodič. třídě.
Protože v rod. třídě je tato metoda, která volá
def add_form_to_kmen(self, sword):
...
self.transpose.add_data_to_conjugation(self.current_table_name, self.current_column_name, kmen, koncovka, self.adverbs[self.adverb_counter-1], self.adverb_counter, preceding_string)
To znamená, zatímco Parser parsuje data, ukládá slovíčka i do "kontejneru" transpose... Říkám tomu tedy kontejner... Ale v podstatě je to třída, která obsahuje tyto prostředky na strukturální ukládání dat, tak aby bylo možné k nim snadno přistoupit a vypsat data po sloupcích. Takže během parsování transpose slouží k převodu řádků na sloupce. To je ta závislost.
Rodičovský __init__ existuje, musí existovat:
class VerbParser:
def __init__(self, sloveso, hledane_kmeny):
self.sloveso = sloveso
self.hledane_kmeny = hledane_kmeny
self.new_table = False
self.table_counter = 0
self.tr_counter = 0
self.current_table_raw_no = 0
self.header_column_counter = 0
self.column_counter = 0
self.adverb_counter = -1
self.current_adverb = ""
self.person = None
self.last_line_adverb = ""
self.process_next_word_in_cell = False
self.verb_forms = {kmen: [] for kmen in hledane_kmeny}
self.verb_forms_precedes = {kmen: [] for kmen in hledane_kmeny} # Toto je kontejner na slovíčka, která nejsou součástí kmene zpracovávaného slovesa, nutno sbírat i prázdné výskyty.
self.verb_forms_check = {kmen: 0 for kmen in hledane_kmeny} # data o tom kolik je tam záznamů - !!! Také slovo bez koncovky se počítá do verb_forms_check jako jeden z tvarů
self.verb_no_form = {kmen: False for kmen in hledane_kmeny} # data o tom zda se daný kmen nachází na řádku v identické podobě bez koncovky
self.verb_forms_dupl_ignored = 0
self.table_names = []
self.column_names = []
self.adverbs = []
self.current_table_name = None
self.current_column_name = None
self.is_last_tr_detected = False
self.is_last_column_detected = False
self.is_last_cell = False
self.i = 0
# VerbParserTranspose - Rozšiřující třída: Přidání kontejneru pro transpozici - čas, osoba, koncovka
self.transpose = VerbParserTranspose(sloveso, hledane_kmeny)
Tak proto jsem myslel, že by tam mělo být toto
class VerbParserTranspose(VerbParser):
def __init__(self, sloveso, hledane_kmeny):
super().__init__(sloveso, hledane_kmeny)
ovšem neumím realizovat to aby třída byla strukturovaná na více úrovních - přehledná, že se nevolají všechny metody ze stejného místa, z jednoho wrapujícího objektu, ale že se volají z transpose, aby bylo jasné, k čemu data a metody jsou. Tím se odděluje Parser jako takový od dat určených k výpisu. I když Parser taky shromažďuje data, ale jen kmeny a koncovky jako vše... Tam není žádné filtrování.
V případě že by nebylo možné v pythonu dosáhnout takové struktury jako já znám třeba z JQuery (JS) (i když srovnání s asynchronním jazykem možná není přesné)... Tak bych musel mít dvě oddělené třídy, zavést instanci transpose... a pak zavést instanci toho parseru - do jehož konstruktoru bych předal instanci transpose...