MackS wrote:
I'm new to Python. In general I manage to understand what is happening
when things go wrong. However, the small program I am writing now fails
with the following message:

In general you are more likely to get helpful responses from this group if you post the actual code that has the problem and include the actual traceback. However...

AttributeError: ClassA instance has no attribute '__len__'

Following the traceback,I see that the offending line is

self.x = arg1 + len(self.y) + 1

len calls the object's __len__ method. self.y is bound to something (an instance of ClassA) that apparently has no __len__ method



Why should this call to the built-in len() fail? In a small test program it works with no problems:

class foo:
  def __init__(self):
    self.x = 0
    self.y = 'y'

  def fun(self, arg1):
      self.x = arg1 + len(self.y) + 1


a = foo()
a.fun(2)


In this case self.y is bound to something different i.e., 'y' :an object of type str, which has a __len__ method:
>>> 'y'.__len__()
1


Michael



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

Reply via email to