I changed the programme to this :<br>class Bag:<br>    def __init__(self):<br>        self.data = []<br><br>    def add(self, x):<br>        self.data.append(x)<br>    def addtwice(self, x):<br>         self.add(x)<br>         self.add(x)<br>
         return x <br>y = Bag()<br>print y.addtwice(4)<br><br>Now its not showing any error but result is same as the number passed for adding twice ....<br><br><br><div class="gmail_quote">On Wed, Oct 24, 2012 at 2:55 PM, Dave Angel <span dir="ltr"><<a href="mailto:d@davea.name" target="_blank">d@davea.name</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 10/24/2012 08:11 AM, inshu chauhan wrote:<br>
> I was just trying out a programme for learning classes in python<br>
><br>
> The prog below is showing an error which it should not show :<br>
><br>
> class Bag:<br>
>     def __init__(self, x):<br>
>         self.data = []<br>
><br>
>     def add(self, x):<br>
>         self.data.append(x)<br>
>     def addtwice(self, x):<br>
>          self.add(x)<br>
>          self.add(x)<br>
> y = Bag(4)<br>
> print " Adding twice of %4.2f gives " % (y.addtwice())<br>
><br>
</div>Perhaps you're confusing the two x parameters.  They are totally<br>
independent local variables, and the value of one is not in any way<br>
"remembered" for the other.  When you want to save things between<br>
multiple methods of an object, then store them in the object, perhaps in<br>
self.data  As it stands, the __init__ does not save the x at all, so the<br>
4 that's passed into the initializer is thrown away.<br>
<br>
You call addtwice(), but don't supply any value to add.  y serves as the<br>
self value, but you have no x value.  What value did you intend to add?<br>
<br>
You'll have another problem, in that addtwice() doesn't return any value<br>
(so it returns None).  Therefore the print isn't going to work.  Please<br>
separate the print from the calculations, and the problems will be lots<br>
easier to figure out.  The wording of the string implies it's going to<br>
display two values, but the only value given it is None.<br>
<div class="im"><br>
> Error is :<br>
><br>
> Traceback (most recent call last):<br>
>   File "Z:\learning Python\learn5.py", line 35, in <module><br>
>     print " Adding twice of %4.2f gives " % (y.addtwice())<br>
> TypeError: addtwice() takes exactly 2 arguments (1 given)<br>
><br>
> why the prog is having this error with self nd x as arguments ???<br>
><br>
><br>
</div>self and x are parameters.  You don't pass an argument for x to be bound to.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
<br>
--<br>
<br>
DaveA<br>
<br>
</font></span></blockquote></div><br>