> When I try to use the class listed below, I get the statement that > self > is not defined. > > test=TriggerMessage(data) > var = test.decode(self.qname) > > I would have thought that self would have carried forward when I > grabbed > an instance of TriggerMessage.
self is a special varianble that is only defined inside of a method of an object. It refers to the object itself (hence the name!) Thus you cannot pass self.qname into a method unless you are already inside another object's method. You can read about this in more edetail in the OOP topic of my tutor but I'll try to illustrate here: class C: def method(self,x): self.var = x def g(self, anObj): anObj.f(self.var) class D: def f(self, val): print val c = C() c.method(42) creates an object called c and executes its method with a value of 42. This executes the function C.method(c,42) where self takes the values c and x 42 The end result is that object c has a data member called var with the value 42 d = D() c.g(d) creates a new object d calls the g method of c passing object d as argument executes the function C.g(c,d) where self takes on the value c and anObj takes on d C.g() then calls d.f(self.var) which executes D.f(d,c.var) that is, the self in D.f() is d and the self in C.g() = c I hope that makes sense. Alan Gauld Author of the Learn to Program web site http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor