On 26/11/13 07:30, Reuben wrote:
Hi,

Following is my code:
#############################################
class Animal():

       flag = True
       print flag

       def __init__(self,name):
self.name <http://self.name> = name
            print self.name <http://self.name>

       def walk(self):
           print "I am walking"


if __name__ == '__main__':
      test = Animal('boxer')
      test.flag = False


If you really want the flag to be a class attribute rather than an instance one you should set it using the class name. So instead of test.flag use
        Animal.flag = False

That works inside the class methods too.

By setting test.flag you are creating a new instance level attribute
that exists only within the test instance. That's legal Python
but usually its not a good idea to have different instances of
the same class having different attributes.

>>> class C:
...    f = True
...    def g(self): self.f = 42
...
>>> c = C()
>>> c.f
True
>>> c.g()
>>> c.f
42
>>> C.f
True
>>> d = C()
>>> d.f = 66
>>> d.f
66
>>> C.f
True
>>>



--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

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

Reply via email to