Forgotten attachment (sorry): python hijack.
class A(object):
	"""Class with two attribute sets: one set in the class itself, one in a proxied dictionary (called props here).
	The classe has 'a' attribute for itself and (b,c) attributes in the proxee. They are accessed in the same way.
	Adding/deleting attributes is not supported, which is OK. Redefining __getattr__ and __setattr__ implies the
	necessity of accessing all attributes using __dict__."""
	def __init__(self):
		self.__dict__['props']={'b':2,'c':3}
		self.__dict__['a']=1
	def __getattr__(self,attr):
		"Try to get attribute from the class itself, the try to fetch it from the proxied dictionary, then fail"
		if attr in self.__dict__: return self.__dict__[attr]
		elif attr in self.__dict__['props'].keys(): return self.__dict__['props'][attr]
		else: raise AttributeError("Attribute "+attr+" doesn't exist")
	def __setattr__(self,attr,value):
		if attr in self.__dict__.keys(): self.__dict__[attr]=value
		elif attr in self.__dict__['props'].keys(): self.__dict__['props'][attr]=value
		else: raise AttributeError("Attribute "+attr+" doesn't exist")
a=A()
# test attribute access
print a.a,a.b,a.c
# non-existent attributes should throw
try:
	a.d=4
	print a.d
except AttributeError: pass
# assign to attributes
a.a=4; a.b=a.a+1; a.c=6
print a.a,a.b,a.c
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to