问题描述
我正在学习 julia (v1.6) 并且我正在尝试创建一个 julia 函数来从 python 类(pycall 等效)运行 julia 方法,其中该方法是一个打印。
我尝试了不同的方法,但在创建类或调用方法或其他方法时遇到了不同的错误。
https://github.com/JuliaPy/PyCall.jl(作为参考)
这是我正在使用的代码。
using PyCall
# Python Class
@pydef mutable struct python_class
function __init__(self,a)
self.a = a
end
# Julia Method embeded in Python Class
function python_method(self,a)
println(a)
end
# Julia calling python class with julia method
function main(class::PyObject,a::string)
# Instantiate Class
b = class(a)
# Call Method
b.python_method(a)
end
a = "This is a string"
# Run it
main(python_class,a)
end
预期输出相当于python中的print('This is a string')。
有人可以帮我让它工作吗?
提前致谢
解决方法
这一切似乎都有效,只是您在错误的位置有一个 end
,它应该是 String
而不是 string
。
julia> @pydef mutable struct python_class
function __init__(self,a)
self.a = a
end
# Julia Method embeded in Python Class
function python_method(self,a)
println(a)
end
end
PyObject <class 'python_class'>
julia> function main(class::PyObject,a::String)
# Instantiate Class
b = class(a)
# Call Method
b.python_method(a)
end
main (generic function with 1 method)
julia> a = "This is a string"
"This is a string"
julia> main(python_class,a)
This is a string