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