I changed the programme to this :
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)
         return x
y = Bag()
print y.addtwice(4)

Now its not showing any error but result is same as the number passed for
adding twice ....


On Wed, Oct 24, 2012 at 2:55 PM, Dave Angel <d...@davea.name> wrote:

> On 10/24/2012 08:11 AM, 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 = []
> >
> >     def add(self, x):
> >         self.data.append(x)
> >     def addtwice(self, x):
> >          self.add(x)
> >          self.add(x)
> > y = Bag(4)
> > print " Adding twice of %4.2f gives " % (y.addtwice())
> >
> Perhaps you're confusing the two x parameters.  They are totally
> independent local variables, and the value of one is not in any way
> "remembered" for the other.  When you want to save things between
> multiple methods of an object, then store them in the object, perhaps in
> self.data  As it stands, the __init__ does not save the x at all, so the
> 4 that's passed into the initializer is thrown away.
>
> You call addtwice(), but don't supply any value to add.  y serves as the
> self value, but you have no x value.  What value did you intend to add?
>
> You'll have another problem, in that addtwice() doesn't return any value
> (so it returns None).  Therefore the print isn't going to work.  Please
> separate the print from the calculations, and the problems will be lots
> easier to figure out.  The wording of the string implies it's going to
> display two values, but the only value given it is None.
>
> > 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)
> >
> > why the prog is having this error with self nd x as arguments ???
> >
> >
> self and x are parameters.  You don't pass an argument for x to be bound
> to.
>
>
>
>
> --
>
> DaveA
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to