On Sat, 11 Apr 2009 03:01:48 -0700, Edd wrote: > Yes I probably mean instance attributes. Forgive me, I am not > particularly sure of the terminology. But your MyClass example, won't > quite do what I want, as I'd like to be able to define instance > attributes on top of instance attributes by assignment: > >>>> class MyClass(): pass > ... >>>> instance = MyClass() >>>> instance.lasers.armed = True > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > AttributeError: MyClass instance has no attribute 'laser'
Ah, now it is more clear. Okay, let's try this: >>> class C(object): ... def __getattr__(self, name): ... # Only called if self.name doesn't exist. ... inst = self.__class__() ... setattr(self, name, inst) ... return inst ... >>> c = C() >>> c.x.y.z = 45 >>> c.__dict__ {'x': <__main__.C object at 0xb7c3b78c>} >>> c.x.__dict__ {'y': <__main__.C object at 0xb7c3b7ec>} >>> c.x.y.z 45 -- Steven -- http://mail.python.org/mailman/listinfo/python-list