[Tutor] Understanding Classes
spir
denis.spir at gmail.com
Tue Jan 21 09:50:43 CET 2014
On 01/21/2014 05:20 AM, Christian Alexander wrote:
> Alan,
>
> The concept and purpose of classes is starting to sink in a little bit, but
> I still haven't had my "Ah-ha" moment yet. I just can't seem to visualize
> the execution of classes, nor am I able to explain to myself how it
> actually works. For example:
>
>
> class Person:
> def __init__ (self, name, age): # is self just a placeholder
> for an arbitrary object? How does __init__ actually work?
> self.name = name # why assign name to
> self.name variable?
> self.age = age # same as previous
> def salute (self): # again with the
> self
> print ("Hello, my name is " + self.name +
> " and I am " + str(self.age) + " years old.")
[PLease avoid top-posting, and quote only the parts of the post you actually
reply to.]
Yes, self is just a placeholder, as I said in the post you reply to. (I used the
same word.) It is a placeholder for *whatever object it operates on, now*. If
you call a Person methon on 'x', then x is assigned to self.
We assign name & age tp self, meaning to x, because a person is defined as a
composite piece of data {name, age}. Read again the very start of my previous
post, where I wrote the definition of p1, directly, in an imaginary language:
p1 = {name="Maria", age=33} # no good python code
This is a programming of a person, as we need. This means, for this application,
we need a person to be defined by these 2 relevant properties, both of them, and
nothing more.
__init__ works as if we had programmed that way:
===============
class Person:
def init (self, name, age):
self.name = name
self.age = age
def salute (self):
print ("Hello, my name is " + self.name +
" and I am " + str(self.age) + " years old.")
p1 = Person()
p1.init("Maria", 33)
p1.salute()
================
except that we don't need to call it. Do you understand the principle of (1)
defining a function with potential input variables (2) executing it on actual
input variables? In python the "potential input variables" are called
"parameters", while "actual input variables" are called "arguments".
There is a similar relation between a class and objects of that class. A class
defined potential objects, with potential attributes (here name & age);
"instances" are actual objects of that class with actual attributes.
For the matter, I don't think your difficulties with these notions are related
to you beeing a visual thinkers: I am, too, and strongly so (and after all, the
notion of type is firstly visual: think at naive species).
Denis
More information about the Tutor
mailing list