if zone is not of a datatype with a __len__ attribute, this will blow up with a python exception that is not all that helpful to the user. I'd say catch AttributeError and throw a ValidationException saying that whatever the user supplied is not a suitable thing to use for a crop definition.