[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