Home | Trees | Indices | Help |
|
---|
|
1 2 classHierarchy = {} 3 4 classHierarchy['Entity'] = { 5 # Default goal weights 6 'goals': [], 7 # Default horizon on lookahead 8 'horizon': 1, 9 # Default depth on belief recursion 10 'depth': 2, 11 # Default set of possible models 12 'models': {}, 13 # Current model used as basis for this entity 14 'model': None, 15 # Default relationships 16 'relationships': {}, 17 # Default initially public persona 18 'persona': {}, 19 # Default set of actions 20 'actions': {'type':None}, 21 # For UI purposes... 22 'full-name': "Generic Entity", 23 'subtype-name': None, 24 # this class should be considered abstract 25 'abstract': 1, 26 # default count for scenerio creation 27 'defaultCount': 0 28 } 2931 classObj = classHierarchy[ classId ] 32 if( classObj.has_key( attribId ) ): 33 return classObj[ attribId ] 34 # if( classId == None ): 35 # throw new KeyError #or however Python does it 36 else: 37 for parent in classObj['parent']: 38 try: 39 return getClassAttrib(parent, attribId ) 40 except KeyError: 41 pass 42 else: 43 raise KeyError,'%s has no feature %s' % (classId,attribId)44 4547 #print "isSubclassOf( ", class1, ", ", class2, " )" 48 assert classHierarchy.has_key( class1 ) 49 assert classHierarchy.has_key( class2 ) 50 51 # dp: Modified to handle new multiple-inheritance taxonomy 52 classList = [class1] 53 while len(classList) > 0: 54 curClass = classList.pop() 55 if class2 == curClass: 56 return 1 57 else: 58 try: 59 classList += classHierarchy[curClass]['parent'] 60 except KeyError: 61 pass 62 return None63 ## if( class1 == class2 ): 64 ## return 1 65 ## curClass = class1 66 ## while( curClass != None ): 67 ## curClass = classHierarchy[curClass]['parent'] 68 ## if( curClass == class2 ): 69 ## return 1 70 ## return None 7173 try: 74 assert classHierarchy.has_key( parentClass ) 75 if not classHierarchy.has_key( className ): 76 77 newClass = { 'parent': parentClass } 78 classHierarchy[ className ] = newClass 79 except AssertionError: 80 return 81 82 return classHierarchy[ className ]83 84 85 86 # Return an alphabetical list of Entity class name88 # The class names 89 names = classHierarchy.keys() 90 names.remove(None) 91 names.sort() 92 93 return names94 95 # Returns a new dict: class Id -> dict sub-class Id, etc...97 names = getEntityClassList( classHierarchy ) 98 99 #remove None (the hierarchy root) 100 names.pop(0) 101 # init dicts 102 root = {} 103 dicts = { None: root } 104 105 for name in names: 106 if( dicts.has_key( name ) ): 107 dict = dicts[name] 108 else: 109 dict = {} 110 dicts[name] = dict 111 112 # dp: rewritten to handle multiple parents...not sure if it's 113 # doing the intended thing anymore 114 classList = classHierarchy[name]['parent'] 115 if len(classList) == 0: 116 classList = [None] 117 for parent in classList: 118 if( dicts.has_key( parent ) ): 119 pDict = dicts[parent] 120 else: 121 pDict = {} 122 dicts[parent] = pDict 123 124 pDict[name] = dict 125 return dicts # The generic entity and it's sub-classes126 127 # Returns a new dict: class Id -> dict sub-class Id, etc... 128 ##def buildUserHierarchicalEntityDict( classHierarchy ): 129 ## names = getEntityClassList() 130 131 ## #remove None (the hierarchy root) 132 ## names.pop(0) 133 ## # init dicts 134 ## root = {} 135 ## dicts = { None: root } 136 137 ## for name in names: 138 ## dict = {} 139 ## if( dicts.has_key( name ) ): 140 ## dict = dicts[name] 141 ## else: 142 ## dicts[name] = dict 143 144 ## parent = classHierarchy[name]['parent'] 145 ## pDict = {} 146 ## if( dicts.has_key( parent ) ): 147 ## pDict = dicts[parent] 148 ## else: 149 ## dicts[parent] = pDict 150 151 ## pDict[name] = dict 152 153 ## return { None: root } # The generic entity and it's sub-classes 154 155 156 157 #def printEntityHierarchy( classhierarchy=defaultClassHierarchy ): 160162 children = dict.keys() 163 children.sort() 164 for childId in children: 165 child = classHierarchy[childId] 166 try: 167 name = child['full-name'] 168 if( child.has_key( 'subtype-name' ) and 169 child['subtype-name'] != None ): 170 name = child['subtype-name'] 171 print( indent+name+" ("+repr(childId)+")" ) 172 printEntityHierarchyImpl( dict[childId], ' '+indent ) 173 except KeyError: 174 pass175 176 177 178 179 180 if __name__=='__main__': 181 # print( repr( getEntityHierarchy() ) ) 182 printEntityHierarchy() 183
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Wed Aug 19 16:49:53 2009 | http://epydoc.sourceforge.net |