[python] dynamicky vytvarene podtridy?

Jan Matejka matejka na cat.cz
Čtvrtek Září 30 16:27:49 CEST 2004


> Ano slo -- jde v podstate o vlastni konstruktor, jestli jsem to dobre 
> pochopil.

Spis jsem myslel opakovane vytvareni tridy slozene ze dvou trid. Trochu
jsem ten priklad upravil na rekurzivni volani combineClasses.
Nebo Vy mluvite o voze a ja o koze?

class a:
	def __init__(self):
		print "init a"

	def aa(self):
		print "aa"

class b:
	def __init__(self):
		print "init b"

	def bb(self):
		print "bb"

class c:
	def __init__(self):
		print "init c"

	def cc(self):
		print "cc"

class d:
	def __init__(self):
		print "init d"

	def dd(self):
		print "dd"


def combineClasses(clslist):
	if len(clslist)==1:
		return clslist[0]
	else:
		c1=clslist[0]
		c2=combineClasses(clslist[1:])
		class z(c1,c2):
			def __init__(self):
				c1.__init__(self)
				c2.__init__(self)
		return z
	
print "kombinace a,b"
cz=combineClasses([a,b])
iz=cz()

iz.aa()
iz.bb()
print "a",issubclass(cz,a)
print "b",issubclass(cz,b)
print "c",issubclass(cz,c)
print "d",issubclass(cz,d)


print "kombinace a,c,d"
cz=combineClasses([a,c,d])
iz=cz()
iz.aa()
iz.dd()
iz.cc()
print "a",issubclass(cz,a)
print "b",issubclass(cz,b)
print "c",issubclass(cz,c)
print "d",issubclass(cz,d)

Jan Matejka




Další informace o konferenci Python