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.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to