2010.10.13 21:55
budowa dzidy
Wiecie, z
czego składa się dzida? Obudziłem się dziś i przyszła mi do głowy taka klasa:
class CzescDzidy:
def __init__(self, rodzic = None, polozenie = None):
self.rodzic = rodzic
self.polozenie = polozenie
@property
def mianownik(self):
if self.rodzic is None:
return "dzida"
else:
assert(not self.polozenie is None)
return self.polozenie["mianownik"] + " " + self.rodzic.dopelniacz
@property
def dopelniacz(self):
if self.rodzic is None:
return "dzidy"
else:
assert(not self.polozenie is None)
return self.polozenie["dopelniacz"] + " " + self.rodzic.dopelniacz
__str__ = lambda self: self.mianownik
__repr__ = lambda self: self.mianownik
def __iter__(self):
return CzescDzidyIterator(self)
class CzescDzidyIterator:
licznik = 0
czesci = {
1: {
"mianownik": "przeddzidzie",
"dopelniacz": "przeddzidzia"
},
2: {
"mianownik": "srodddzidzie",
"dopelniacz": "srodddzidzia"
},
3: {
"mianownik": "zadzidzie",
"dopelniacz": "zadzidzia"
}
}
def __init__(self, rodzic):
self.rodzic = rodzic
def next(self):
self.licznik += 1
if self.licznik == 4:
raise StopIteration()
return CzescDzidy(self.rodzic, self.czesci[self.licznik])
Korzysta się z niej na przykład tak:
d1 = CzescDzidy()
print d1
d2 = [x for x in d1]
print d2
d3 = [x for x in d2[1]]
print d3
d4 = [x for x in d3[0]]
print d4
d5 = [x for x in d4[2]]
print d5
No i zamiast pakować się do wyjazdu musiałem usiąść i to zapisać. A teraz myślę, czy taki
pomysł mógłby się przydać w jakiejś sytuacji praktycznej.
komentarze:
powrót na stronę główną
RSS