classes

Mark Lawrence breamoreboy at yahoo.co.uk
Wed Oct 24 09:09:00 EDT 2012


On 24/10/2012 13:48, inshu chauhan wrote:
> I was just trying out a programme for learning classes in python
>>>
>>> The prog below is showing an error which it should not show :
>>>
>>> class Bag:
>>>       def __init__(self, x):
>>>           self.data = []
>>>
>>
>> You do nothing with x here. Right so x shouldnot be in the argument.
>>
> Fine
>
> *class Bag:
>>       def __init__(self):
>>           self.data = []*
>>
>>
>>>       def add(self, x):
>>>           self.data.append(x)
>>>       def addtwice(self, x):
>>>            self.add(x)
>>>            self.add(x)

No return given so it will default to returning None, but...

>>> y = Bag(4)
>>>
>>
>> Create y with an argument of 4 'which is discarded in the initialiser.'
>> means ??
>>
>>
>>   print " Adding twice of %4.2f gives " % (y.addtwice())

...you seem to be expecting addtwice to be returning a Python float. 
Only you can tell us why as I've not yet gone to first year mind reading 
classes :)

>>>
>>
>> There's no argument passed to addtwice here. ' why am I not passing y to
>> addtwice here ??

You are passing y, it's called self.  Why aren't you passing x?

>>
>>
>>
>>>
>>> Error is :
>>>
>>> Traceback (most recent call last):
>>>     File "Z:\learning Python\learn5.py", line 35, in <module>
>>>       print " Adding twice of %4.2f gives " % (y.addtwice())
>>> TypeError: addtwice() takes exactly 2 arguments (1 given)
>>>
>>
>> Exactly what I'd expect to happen.  What did you expect? I am learning
>> ....
>>
>>
>>
>>> why the prog is having this error with self nd x as arguments ???
>>>
>>
>> What x argument?  Clearly wrong as I've pointed out above. How can i
>> correct it ??

Put whatever it is you want appended to self.data in the call to 
y.addtwice.  And/or get addtwice to return the correct data type. 
And/or correct anything that I've missed like I did the first time around.

>>
>>
>> --
>> Cheers.
>>
>> Mark Lawrence.
>>
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
>

-- 
Cheers.

Mark Lawrence.




More information about the Python-list mailing list