Emile van Sebille wrote:

"A class is a container for shared state, combined with functions (methods) that operate on that state. By putting state variables into member fields, they are accessible to all the methods of the class without having to be passed as parameters."

So, by his own definition state variables are parameters.

An example might help clarify this. Suppose you have a class with a method that takes various parameters:

class Parrot:
    def talk(self, text, loud, squawk):
        if squawk:
            text += " Squawk!!!"
        if loud:
            text = text.upper()
        print(text)


Parrot instances don't have any state (which kinda defeats the purpose of using an object, but never mind) but you have to provide extra arguments to the method:

polly = Parrot()
polly.talk("Polly wants a cracker!", False, True)


We can give the instance state and reduce the arguments given to the method:

class Parrot:
    def __init__(self, squawks=True, loud=False):
        self.squawks = squawks
        self.loud = loud
    def talk(self, text):
        if self.squawks:
            text += " Squawk!!!"
        if self.loud:
            text = text.upper()
        print(text)


polly = Parrot()
polly.talk("Polly wants a cracker!")


In Python, nearly all objects have state. Even ints and floats have state -- their state is their value. Exceptions are:

None
NotImplemented
direct instances of object (not subclasses of object)

and possibly one or two others that I haven't thought of.



--
Steven

_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to