rust - 使用 kwargs 从 Python Rust 函数调用失败
问题描述
我很难去kwargs
上班。我明白,就像#[args(args="*")]
是为了args
,#[args(kwargs="**")]
是为了kwargs
。
但是,当我打包以下使用pyo3-pack
并尝试test1
使用任何参数调用时,我得到了错误MyClass.test1()() takes at most 0 argument (1 given)
。
我究竟做错了什么?
#![feature(custom_attribute)]
#![feature(specialization)]
use pyo3::prelude::*;
use pyo3::types::{PyDict, PyTuple};
#[pyclass]
struct MyClass {}
#[pymethods]
impl MyClass {
#[staticmethod]
#[args(kwargs = "**")]
fn test1(kwargs: Option<&PyDict>) -> PyResult<()> {
if let Some(kwargs) = kwargs {
for kwarg in kwargs {
println!("{:?}", kwarg);
}
} else {
println!("kwargs is none");
}
Ok(())
}
#[staticmethod]
#[args(args = "*")]
fn test2(args: &PyTuple) -> PyResult<()> {
for arg in args {
println!("{:?}", arg);
}
Ok(())
}
}
#[pymodule]
fn test123(_py: Python, m: &PyModule) -> PyResult<()> {
m.add_class::<MyClass>()?;
Ok(())
}
解决方案
推荐阅读
- serverless - serverless.cli.consoleLog 在无服务器更新后引发错误 - 收到拒绝:TypeError:无法读取未定义的属性“consoleLog”
- kubernetes - 如何使用负载均衡器类型为 aws eks 提供弹性 IP 以进行外部服务?
- javascript - 带条纹的赛普拉斯:未加载元素高度
- python - Botframework 发送主动消息然后字符串不为空
- linux - 安装 deb 包时,出现错误:gtk-update-icon-cache: No theme index file。嘿!
- azure-devops-server-2019 - 将 Azure Devops Server 2019 升级到 Azure Devops Server 2020
- laravel - 如何在 Vue.js 和 Laravel 中上传文件数组?
- c++ - C ++加法运算符多次重载
- node.js - 在node.js api中出现套接字异常错误端口一直需要清除本地地址上的路由
- javascript - LoadFromJson 不工作/在使用织物文本上传后忽略对象属性