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:

ksywa:

tu wpisz cyfrę cztery: (to takie zabezpieczenie antyspamowe)

komentarze wulgarne albo co mi się nie spodobają będę kasował


powrot na strone glowna

RSS