I'm trying to teach myself OOP in python (again). The following code from Dawson's book runs fine, unaltered [1].

class Critter(object):
        """ A virtual pet """
        def __init__(self, name):
                print "A new critter is born"
                self.name = name
                
        def get_name(self):
                return self.__name
        
        def set_name(self, new_name):
                if new_name == "":
                        print "A critters name cant be the empty string"
                else:
                        self.__name = new_name
                        print "Name change successful"        

                        
        name = property(get_name, set_name) #[1]
        # name = property(get_name) #[2]
        #different_name = property(get_name) #[3]

        def talk(self):
                print "Hi. I'm", self.name

If I change [1] to [2] I get:

Traceback (most recent call last):
  File "propertycritter.py", line 26, in <module>
    crit = Critter("Poochie")
  File "propertycritter.py", line 7, in __init__
    self.name = name
AttributeError: can't set attribute

If I change [1] to [3] the program runs with no errors.

Could someone please explain why I am seeing these results.

Thanks,  Jim
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to