Hi Michael, Michael Langford wrote: > In C, you may have "objectorientedesque" code like the following; > > struct net { > int foo; > int bar; > int baz; > }; > > > void populate_net( struct net* mynet, int fooval, int barval) > { > mynet->foo = fooval; > mynet->bar = barval; > mynet ->baz = fooval * 5; > } > > int connect_to_net(struct net* mynet) > { > return open_internet_connection(mynet->foo); > } > > int main (void) > { > struct net inet; > populate_net(&inet,2,2); > > int returncode = connect_to_net(&inet); > printf("%d\n",returncode); > }
Heh I had to grab my C book and browse up on structs and pointers to get an idea what this was all about :) > In that batch of C code, you manipulate the struct without fiddling > with its fields in the user code. You let the functions change its > values so that they are done correctly. Ok that makes sense. > In python, you are doing something similar. However, they make some > syntactic sugar to make it so you don't have to pass the object in > explicily. That is what self is. Got it. > So the analgous python code is: > > > class net(object): > def __init__(self,fooval,barbal): > self.foo = fooval > self.bar = barval > self.baz = fooval*5 > > def connect_to(self): > return open_internet_connection(self.foo) > > > inet = net(2,2) > returncode = inet.connect_to() > print returncode > > See how you don't have to pass in the inet object in? Instead you call > it with the inet.connect_to() function, and the object itself is > passed in explicitly as self? Aaah starting to understand now. > That's all it is. > > Btw, make sure to always include "self". Otherwise you'll be writing a > class method and it doesn't work the same way. Thanks for the elaborate explanation! Regards, Patrick _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor