[Tutor] Problem appending to a list using a property within a class
Roy Bleasdale
royb at ubiquity.com.au
Wed Nov 9 04:54:52 CET 2005
I have created a List within a class. If I try and append to the list using
the set function using the property value my variable stops being a list.
Can anyone explain why the set function called by the class property does
not append to the list?
Here is some sample code:
class ShoppingBag:
def __init__(self):
self.fruit = []
self.veg = []
self.spam = 0
self.beer = []
def getspam(self):
return self.spam
def setspam(self,value):
self.spam = value
spam = property(getspam,setspam,None,None)
def getveg(self):
return self.veg
def setveg(self,value):
self.veg.append(value)
veg = property(getveg,setveg,None,None)
def getfruit(self):
return self.fruit
def setfruit(self,value):
self.fruit.append(value)
fruit = property(getfruit,setfruit,None,None)
def Addfruit(self,value):
self.fruit.append(value)
def getbeer(self):
return self.beer
def setbeer(self,value):
self.beer.append(value)
beer = property(getbeer,setbeer,None,None)
bag = ShoppingBag()
bag.spam = 3
bag.veg = "carrots"
bag.veg = "broccoli"
bag.veg = "cauliflower"
bag.Addfruit("apple")
bag.Addfruit("banana")
bag.Addfruit("orange")
bag.setbeer ("coopers")
bag.setbeer("mountain goat")
bag.setbeer("cascade")
print "contents of bag"
print bag.spam
print bag.veg
print bag.fruit
print bag.beer
basket = ShoppingBag()
basket.setveg ( "carrots")
basket.setveg ( "broccoli")
basket.setveg ( "cauliflower")
print "contents of basket"
print basket.veg
when I run it I get:
contents of bag
3
cauliflower
['apple', 'banana', 'orange']
['coopers', 'mountain goat', 'cascade']
contents of basket
['carrots', 'broccoli', 'cauliflower']
Thanks
More information about the Tutor
mailing list