In Sage, "10" is a Sage integer, not a Python int. I am guessing that 
gateway.jvm.java.util.Random.nextInt 
expects a Python int for its input, and when it gets a Sage Integer, that 
causes a problem. What happens if you replace "random.nextInt(10)" with 
"random.nextInt(int(10))"?




On Wednesday, August 2, 2017 at 12:16:54 PM UTC-7, Paul DesJardin wrote:
>
> Hi, I'm new to using Sage and trying to interface to java classes using 
> py4j.  I've been successful using py4j using an anaconda installed version 
> of python (on a mac) but I'm running into Attribute errors using Sage.  The 
> one below is 'sage.rings.integer.Integer' object has no attribute 
> '_get_object_id'.  I don't understand the reason for the differences and 
> how to interpret the errors I'm receiving.  Any assistance or ideas of what 
> is causing this would be very much appreciated.  Thank you, PD  
>
>
>
>
> sage: *from* *py4j.java_gateway* *import* JavaGateway
>
> sage: gateway = JavaGateway()
>
> sage: random = gateway.jvm.java.util.Random()
>
> sage: number1 = random.nextInt(*10*)
>
> ---------------------------------------------------------------------------
>
> AttributeError                            Traceback (most recent call 
> last)
>
> <ipython-input-4-45af4cb476cf> in <module>()
>
> ----> 1 number1 = random.nextInt(Integer(10))
>
>
>
> /Applications/SageMath/local/lib/python2.7/site-packages/py4j/java_gateway.pyc
>  
> in __call__(self, *args)
>
> *   1149* 
>
> *   1150*     def __call__(self, *args):
>
> -> 1151         args_command, temp_args = self._build_args(*args)
>
> *   1152* 
>
> *   1153*         command = proto.CALL_COMMAND_NAME +\
>
>
>
> /Applications/SageMath/local/lib/python2.7/site-packages/py4j/java_gateway.pyc
>  
> in _build_args(self, *args)
>
> *   1119* 
>
> *   1120*         args_command = "".join(
>
> -> 1121             [get_command_part(arg, self.pool) for arg in 
> new_args])
>
> *   1122* 
>
> *   1123*         return args_command, temp_args
>
>
> /Applications/SageMath/local/lib/python2.7/site-packages/py4j/protocol.pyc 
> in get_command_part(parameter, python_proxy_pool)
>
> *    288*             command_part += ";" + interface
>
> *    289*     else:
>
> --> 290         command_part = REFERENCE_TYPE + parameter._get_object_id()
>
> *    291* 
>
> *    292*     command_part += "\n"
>
>
> /Applications/SageMath/src/sage/structure/element.pyx in 
> sage.structure.element.Element.__getattr__ 
> (/Applications/SageMath/src/build/cythonized/sage/structure/element.c:4230)
> ()
>
> *    457*             AttributeError: 
> 'LeftZeroSemigroup_with_category.element_class' object has no attribute 
> 'blah_blah'
>
> *    458*         """
>
> --> 459         return self.getattr_from_category(name)
>
> *    460* 
>
> *    461*     cdef getattr_from_category(self, name):
>
>
> /Applications/SageMath/src/sage/structure/element.pyx in 
> sage.structure.element.Element.getattr_from_category 
> (/Applications/SageMath/src/build/cythonized/sage/structure/element.c:4339)
> ()
>
> *    470*         else:
>
> *    471*             cls = P._abstract_element_class
>
> --> 472         return getattr_from_other_class(self, cls, name)
>
> *    473* 
>
> *    474*     def __dir__(self):
>
>
> /Applications/SageMath/src/sage/structure/misc.pyx in 
> sage.structure.misc.getattr_from_other_class 
> (/Applications/SageMath/src/build/cythonized/sage/structure/misc.c:1933)()
>
> *    297*         dummy_error_message.cls = type(self)
>
> *    298*         dummy_error_message.name = name
>
> --> 299         raise dummy_attribute_error
>
> *    300*     attribute = <object>attr
>
> *    301*     # Check for a descriptor (__get__ in Python)
>
>
> AttributeError: 'sage.rings.integer.Integer' object has no attribute 
> '_get_object_id'
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to