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