47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| '''
 | |
| Really simplistic walker-processable hierobjects, doesn't
 | |
| have parent attributes, every element has an __attrDict__
 | |
| item and a childlist.  This is different from the mechanisms
 | |
| we'll want to use for multi-tree systems, but it's fairly
 | |
| close.  Should be fairly simply worked with.
 | |
| '''
 | |
| class WalkerAble:
 | |
| 	'''
 | |
| 	Simple hierarchic objects with the following elements
 | |
| 	
 | |
| 	__attrDict__ -- app-specific attributes
 | |
| 	__childlist__ -- childen of this node
 | |
| 	__gi__ -- "type" or Generic Indicator of this node
 | |
| 	__childlist__append__ -- as you'd expect, method on childlist to add an element
 | |
| 	'''
 | |
| 	def __init__(self, childlist=None, attrDict=None, gi=None):
 | |
| 		self.__dict__['__attrDict__'] = attrDict or {}
 | |
| 		self.__dict__['__childlist__'] = childlist or []
 | |
| 		self.__dict__['__gi__'] = gi or ''
 | |
| 		self.__dict__['__childlist__append__'] = self.__childlist__.append
 | |
| 
 | |
| 	def __getattr__(self, attrName):
 | |
| 		'''
 | |
| 		Note: you can store attributes with the same names as
 | |
| 		the reserved names, but to get them back, you'll need
 | |
| 		to read it directly out of the attrDict
 | |
| 		'''
 | |
| 		if attrName != '__attrDict__':
 | |
| 			try:
 | |
| 				return self.__attrDict__[attrName]
 | |
| 			except KeyError:
 | |
| 				pass
 | |
| 		raise AttributeError, attrName
 | |
| 
 | |
| 	def __setattr__(self, attrName, attrVal):
 | |
| 		self.__attrDict__[attrName] = attrVal
 | |
| 	def __setGI__(self, gi):
 | |
| 		self.__dict__['__gi__'] = gi
 | |
| 	def __repr__(self):
 | |
| 		return '''<WalkerAble %(__gi__)s %(__attrDict__)s %(__childlist__)s>'''%self.__dict__
 | |
| 
 | |
| 	# copy functions
 | |
| #	def __getinitargs__(self):
 | |
| #		return (self.__childlist__, self.__attrDict__, self.__gi__)
 | |
| 
 | 
