Informatika2-2012/Gyakorlat10m
A MathWikiből
#!/usr/bin/env python class Jegyzet(str): # def konstruktor atirasa # ebben az esetben felesleges, mert a string-tol szarmazik le # a string pedig eleve ami eleve egy sorozatot var parameternek #def __init__(self, s=[]) # self.__data__ = str(s) pass class Jegyzettomb(list, object): # mivel a lista leszarmazotja igy meg van valositva a # __len__, __getitem__, __iter__ def __init__(self, s = None): if isinstance(s, str): self.append(s) # mivel a lista + operatora sorozatot var parameternek # azt felul kell definialni def __add__(self, j): if isinstance(j, Jegyzettomb): # vagy super segitsegevel hivjuk az os osztaly konstruktorat # (!!! ilyenkor kell hogy hogy az object is benne legyen az orok listajaba!!!), # vagy az orokolt list osztaj add fv.-t hivjuk meg direkt (neh) # super(self, Jegyzettomb).__add__(self, j) list.__add__(self, j) else: if isinstance(j, Jegyzet): self.append(j) return self # generator keszitese def create_gen(self): for i in self: yield i j1 = Jegyzet('vegyel legot') j2 = Jegyzet('vegyel kubut') j3 = Jegyzet('vegyel viragot') jt1 = Jegyzettomb("vidd le a szemetet") jt2 = Jegyzettomb() jt2 + j1 + j2 + j3 print '----------------------------------' for i in jt2.create_gen(): print i print '----------------------------------' jt1 += jt2 for i in jt1: print i