[Pipet Devel] pygtools tutorial - some definitions

J.W. Bizzaro bizzaro at bc.edu
Wed Jun 2 15:11:43 EDT 1999


Danny Rice wrote:
> 
> >Here is a Python example:
> >
> >MyClass:                             # A new class is defined.
> >
> >    def my_method(self, my_number):  # A new method is defined
> >                                     # with the parameter "my_number".
> >        self.my_object = number      # A new object is defined.
> >
> 
> What is "self" here?  A generic parameter or something special?

Self == MyClass or whatever class the code happens to fall under.  So,

    self.my_object = number

is the same as

    MyClass.my_object = number

It's "self-referring".  It is put in as the first parameter passed when the
method is declared so that my_method inherits MyClass's objects.  But it is not,
as I mention below, passed as a parameter by the method call.

> Has "my_object" been declared somewhere else?  Should number be
> my_number?

You're right, it is my_number.  Me bad.

    self.my_object = my_number

_is_ the declaration of the object.  It does not need to be type-defined as with
C.  In C you might type

    int my_object = my_number;


> >my_intance = MyClass()               # An instance is made.
> >my_instance.my_method(2)             # The method is called.
> 
> Why is only 1 parameter passed?

The other parameter, "self", is not passed here because it refers to MyClass,
which is not the class of _this_ block of code but the class of my_method.  So,
confusingly, 1 paramter is passed, but the method lists 2.  It really only
expects one to be passed though (a number or whatever).


> >print my_instance.my_object          # This will print "2".
> 
> It seems like you would need something like "print
> my_instance.my_method.my_object" in case you had multiple methods
> under the class.

Remember that 

    self.my_object = my_number

is the same as

    MyClass.my_object = my_number

Therefore, my_object belongs "under" MyClass in terms of hierarchy, and not
my_method, even though I wrote it in under my_method.  Using "self" makes this
object global to all methods under MyClass.  Finally,

    my_intance = MyClass()

So,

    my_instance.my_object

is the "instance of the object".


> This is all pretty confusing to me.

This is really all there is to it.  In the tutorial I sent so far, I explained
most of the basics of PyGTools/Python OOP (PyG POOP?)  If you just get this
stuff down, the rest is pretty simple.


:-)
Jeff
-- 
J.W. Bizzaro                  mailto:bizzaro at bc.edu
Boston College Chemistry      http://www.uml.edu/Dept/Chem/Bizzaro/
--




More information about the Pipet-Devel mailing list