ΠΌΠ΅ΡΡΡΠ»ΠΎΡΠ½ΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΡΠ΅ , ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π»ΠΎΡΠ΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π½Π° Python Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°ΡΠ° Java. Π‘ΠΎ JPype ΠΎΠ΄ Python, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° Java Π·Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ Java ΠΈ Python ΠΊΠΎΠ΄. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ Jython, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ°ΡΠ° ΡΠΎ Java ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π° Π½Π΅ ΠΏΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° Π²Π°ΡΠΈΡΠ°Π½ΡΠ° Π½Π° Python Π·Π° JVM, ΡΡΠΊΡ ΠΏΡΠ΅ΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Π΄Π²Π΅ΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΊΠΎΠΈ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ Π΄ΠΎΠ±ΡΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ, ΡΡΠΊΡ ΠΈ ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ CPython ΠΈ Java. ΠΠΎΠ΄ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Apache 2.0.
ΠΠ»Π°Π²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- JChar Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ²ΡΠ°ΡΠ΅Π½ ΡΠΈΠΏ. ΠΠ° ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ, JChar Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π° ΠΎΠ΄ "str" ββΠΈ ΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π° ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½Π° ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ° Π²ΠΎ "int". ΠΠ°ΡΠΎΠ°, ΠΏΠΎΠΌΠΈΠ½ΡΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅. ΠΠΎ, ΠΎΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΡΠΌΠ΅ΡΠ° Π·Π° Π½ΡΠΌΠ΅ΡΠΈΡΠΊΠΈ ΡΠΈΠΏ Π²ΠΎ Python ΠΈ Π·Π°ΡΠΎΠ° isinstance(c, int) ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π° Π½Π° False, ΡΡΠΎ Π΅ Π²ΠΎ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎΡΡ ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΡΠΈΠΏΠΎΡ Java.
- ΠΠΎΠ²Π΅Π΄Π΅Π½ Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π° Π΅ΠΌΠΈΡΡΠ²Π°ΡΠ΅ ΡΠΈΠΏ Java, Type@obj (@ Π΅ Python ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π° Π²Π½Π°ΡΡΠ΅ΡΠ΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄; Java Π½Π΅ΠΌΠ° ΡΠ°ΠΊΠΎΠ²).
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π½ΠΎΡΠ°ΡΠΈΡΠ° Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Java Π½ΠΈΠ·ΠΈ. Π’ΠΈΠΏ[s1][s2][s3] Π·Π° Π½ΠΈΠ·ΠΈ ΡΠΎ ΡΠΈΠΊΡΠ½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°, Π’ΠΈΠΏ[:][:][:] Π·Π° Π½ΠΈΠ·ΠΈ ΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ ΠΏΠΎΠ΄ΠΎΡΠ½Π°.
- @FunctionalInterface Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Java-ΡΡΠ½ΠΊΡΠΎΡΠΈ ΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° Python ΡΠΎ __call__.
- ΠΡΡΡΡΠ°Π½Π΅Ρ Π΅ Π·Π°ΡΡΠ°ΡΠ΅Π½ΠΈΠΎΡ JIterator, ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° JException ΠΊΠ°ΠΊΠΎ ΡΠ°Π±ΡΠΈΡΠΊΠΈ, get_default_jvm_path ΠΈ jpype.reflect.
- Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ, ΠΠ°Π²Π° Π½ΠΈΠ·ΠΈΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠ°Π°Ρ Π²ΠΎ Π½ΠΈΠ·ΠΈ Π½Π° ΠΠ°ΡΡΠΎΠ½.
- ΠΠ°ΡΡΠΎΠ½ Π³ΠΎ ΠΎΡΡΡΠ»ΠΈ β__int__β, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠ»Π°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ ΡΠΎ ΡΠ΅Π» Π±ΡΠΎΡ ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠΎ ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Π° Π·Π°ΠΏΠΈΡΠΊΠ° ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π°Ρ Type Error.
- Π£ΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° JException Π΅ Π·Π°ΡΡΠ°ΡΠ΅Π½Π°. ΠΠ° Π΄Π° Π³ΠΈ ΡΠ°ΡΠΈΡΠ΅ ΡΠΈΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈ ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ Π΅ ΡΠΈΠΏ Π½Π° ΠΈΡΠΊΠ»ΡΡΠΎΠΊ Π½Π° Java, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ java.lang.Throwable.
- ΠΠ°ΡΠΊΠ°Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΠ°Π²Π° ΡΠ΅Π³Π° ΡΠ΅ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΡΠ°Π°Ρ Π²ΠΎ ΡΠ°ΠΌΠΊΠΈ Π½Π° ΠΌΠ°Π³Π°ΡΠΈΠ½ΠΎΡ Π½Π° ΠΠ°ΡΡΠΎΠ½.
- JString Π΅ Π·Π°ΡΡΠ°ΡΠ΅Π½. ΠΠ° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Java ΡΡΡΠΈΠ½Π³ ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π΅ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ Java string, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ java.lang.String.
- Repr ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈ Π²ΠΎ ΠΊΠ»Π°ΡΠΈΡΠ΅ Java.
- java.util.List ΠΈΠ·Π²ΡΡΡΠ²Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ Π·Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ.abc.Sequence ΠΈ collections.abc.MutableSequence.
- java.util.Collection Π³ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΎΡ Π·Π° Π½Π°ΠΏΠ»Π°ΡΠ°.abc.Collection.
- ΠΠ°Π²Π° ΠΊΠ»Π°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈ ΠΈ ΡΠ΅ ΠΈΡΡΡΠ»Π°Ρ TypeError ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Ρ ΠΎΠ΄ Python.
- ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΡΠ°ΠΊΡΠ²Π°ΡΡΠ΅ ΡΠΎ Control-C. ΠΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ ΠΏΠ°ΡΠ°Π°Ρ ΠΊΠΎΠ³Π° Java ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° ΡΠΈΠ³Π½Π°Π» Control-C Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠΈΠ΅ ΡΠ΅ ΡΠ° ΠΏΡΠ΅ΠΊΠΈΠ½Π°Ρ Java Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠΎΡ. JPype ΡΠ΅Π³Π° ΡΠ΅ ΡΡΠ»ΠΈ InterruptedException ΠΊΠΎΠ³Π° ΡΠ΅ Π²ΡΠ°ΡΠ° ΠΎΠ΄ Java. Control-C Π½Π΅ΠΌΠ° Π΄Π° ΠΈΡΡΡΠ»ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ Java ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Java Π½Π΅ΠΌΠ° ΠΏΠΎΡΠ΅Π±Π½Π° Π°Π»Π°ΡΠΊΠ° Π·Π° ΠΎΠ²Π°.
Π‘Π»Π΅Π΄Π½ΠΎ, Π±Π΅ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΎ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 1.0.1, ΠΊΠΎΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° Python 3.8.4. ΠΠ°ΡΡΠΎΠ½ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π²ΠΎ Π²ΡΡΠΊΠ° ΡΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° β__setattr__β Π·Π° βΠΎΠ±ΡΠ΅ΠΊΡβ ΠΈ βΡΠΈΠΏβ, ΡΠΏΡΠ΅ΡΡΠ²Π°ΡΡΠΈ ΡΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ ΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈ ΠΊΠ»Π°ΡΠΈ. ΠΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π΄Π΅Π»Π΅Π³ΠΈΡΠ°Π½Π° ΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ β__setattr__β, ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈ Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎΡΡ ΡΡΠ΅Π±Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π°Ρ.
ΠΠ·Π²ΠΎΡ: opennet.ru
