Cześć.
Umieściłem wszystko w klasie "rodzica". Nawet nowy obiekt tworzy się jako element słownika umieszczonego w klasie "rodzica".
Czy takie coś ma sens czy tylko sztuka dla sztuki. W sumie to nawet chyba nie w instancji tylko w samej klasie.
Dopiero poznaję klasy bo jakoś nie jestem do nich przekonany.
class Root():
nrID=-1
dObj={}
level=0
def mIdUp(self):
__class__.nrID+=1
return __class__.nrID
def mLen(self):
return len(__class__.lObj)
def mPrint(self):
print()
dDict=__class__.dObj
for obj in dDict.keys():
print(obj,'->',vars(dDict[obj]))
return None
def mVars(self):
return vars(self)
def mAddChild(self):
try:
nDlaId=int(input("Dla jakiego id?: "))
except:
print('\n\t\t\tId musi być INT!')
return None
if nDlaId in __class__.dObj:
oB=__class__.dObj[nDlaId] #.mVars()
if 'childrensIds' in oB.mVars():
sName=input('Podaj imię: ')
newId=self.mIdUp()
while newId in __class__.dObj.keys():
newId+=1
nextLevel=oB.mVars()['level']+1
__class__.dObj[newId]=Node(sName,nDlaId,nextLevel)
oB.mVars()['childrensIds'].append(newId)
else: print("Ten węzeł nie może mieć dzieci")
else: print('Brak takiego id!')
return None
class Node(Root):
def __init__(self,name,parentId,level):
self.name=name
self.parentId=parentId
self.childrensIds=[]
self.level=level
return None
# making ROOT
Root().dObj[0]=Node('GRoot',None,0) # name,parent id, level
sKey=''
while sKey!='ex':
sKey=input('\nex - przerwij\nw - wypisz l.by l.\nc - dodaj dziecko\np - wypisz RAW\n\tWybierz opcję: ')
if sKey=='w': Root().mPrint()
if sKey=='c': Root().mAddChild()
if sKey=='p': print("\n",Root().dObj)
Pozdrawiam
Radosław Głębicki