Avoiding Python sum default start arg behavior
===

I am working with a Python object that implements `__add__`, but does not subclass `int`. It works with `+`, but `sum()` led to a `TypeError`, because`sum()` first attempts `0 + MyObj`. In order to use `sum()`, my object needs `__radd__` to handle `MyObj + 0` **or** I need to provide an empty object as the `start` parameter. The object in question is not designed to be empty.

Before anyone asks, the object is not list-like or string-like, so use of join() or itertools would not help. I am trying to keep this abstract, but if the nature of the object is critical, I can follow up with more detail. 

Questions I've looked at:

* http://stackoverflow.com/questions/1218710/pythons-sum-and-non-integer-values
* http://stackoverflow.com/questions/4543129/why-theres-a-start-argument-in-pythons-built-in-sum-function
* http://stackoverflow.com/questions/5082190/help-with-add

I'm considering two solutions. One is to avoid `sum()` and use the loop offered in this [comment](http://stackoverflow.com/questions/11520236/how-to-write-a-python-function-that-adds-all-arguments#comment15226549_11520384). I don't understand why `sum()` begins by adding the 0th item of the iterable to 0 rather than adding the 0th and 1st items (like the loop in the linked comment); I hope there's an arcane integer optimization reason.

My other solution is as follows; while I don't like the hard-coded zero check, it's the only way I've been able to make `sum()` work.

    # ...
    def __radd__(self, other):
        # This allows sum() to work (the default start value is zero)
        if other == 0:
            return self
        return self.__add__(other)

**In summary,** is there another way to use `sum()` on objects that can neither be added to integers nor be empty?