On Thu, Oct 10, 2013 at 8:59 AM, Nicholas Devenish <misno...@gmail.com> wrote: > Hi All, > > I have a DynamicObject subclass that is being passed into IronPython. > Sometimes, this subclass represents a collection - at which point it is > currently either Enumerated through TryConvert or Indexed by TryGetIndex. > > However, when in python code calling len(myobject), I get the error "len() of > unsized object" - And I can't work out what it is doing such that I can get > this to work - I thought the TryUnaryOperation overload might be involved, > but it doesn't seem to get called at all. > > Is there a way to achieve this?
I haven't looked at the implementation of len() yet, so I could be wrong, but my guess is that if your object doesn't implement IList (or something else with .Count) it will look for a __len__ method (http://bit.ly/16TDkIJ) on the object. This should be reified as a call to TryGetMember/TryInvoke, so you should be able to selectively provide __len__ for those objects that are collections and leave it out for those that are not. - Jeff _______________________________________________ Ironpython-users mailing list Ironpython-users@python.org https://mail.python.org/mailman/listinfo/ironpython-users