On 01/-10/-28163 02:59 PM, Jim Byrnes wrote:
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
In case#2 you're making name a read-only property. So why on earth would you expect to be able to modify that property?
DaveA _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
