45 lines
1.0 KiB
Python
45 lines
1.0 KiB
Python
class Genetic:
|
|
"""
|
|
A Base class for genetical objects,
|
|
all the instances can inherite attributes from its parent.
|
|
"""
|
|
def __init__(self):
|
|
self.__parent__ = None
|
|
self.__children__ = []
|
|
#print dir(self)
|
|
|
|
def __getattr__(self,n):
|
|
d = self.__dict__
|
|
if n in d.keys():
|
|
return d[n]
|
|
p = self.__parent__ #d['__parent__']
|
|
if p is not None:
|
|
return getattr(p,n)
|
|
raise AttributeError(n)
|
|
|
|
def addChild(self,c):
|
|
self.__children__.append(c)
|
|
c.__parent__ = self
|
|
|
|
def setParent(self,p):
|
|
p.addChild(self)
|
|
|
|
if __name__ == '__main__':
|
|
class A(Genetic):
|
|
def __init__(self,a1,a2):
|
|
Genetic.__init__(self)
|
|
self.a1 = a1
|
|
self.a2 = a2
|
|
|
|
class B(Genetic):
|
|
def __init__(self,b):
|
|
Genetic.__init__(self)
|
|
self.b = b
|
|
gp = A(1,2)
|
|
p = B(3)
|
|
c = A(4,5)
|
|
gc = B(6)
|
|
gc.setParent(c)
|
|
c.setParent(p)
|
|
p.setParent(gp)
|