Dave Angel wrote:
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



Because I was confused and didn't fully understand the process. I was experimenting and trying understand it to use it something else I was writing.

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

Reply via email to