web3.py 和布朗尼:为什么Contract.Struct_array(n)有效,而Contract.Struct_array[n]不起作用?



Contract.sol内部,我定义了

struct id {
string name;
uint num;
}
id[] public id_array;
.
.
.

在python文件中,让C_adrs是已部署的Contract.sol实例的地址。我想打印已部署实例的id_array的第0个条目。出于某种原因,以下给出了所需的结果。

print(C_adrs.id_array(0))

另一方面,下面给出了'ContractCall' object is not subscriptable

print(C_adrs.id_array[0])

发生了什么事?我认为方括号应该访问数组整数。

好吧,是的,在带有[]的python中,你可以访问数组索引,但这是一个函数而不是数组,至少对python来说,python不知道id_array是一个数组,因为它是一个接收参数并返回从区块链获得的东西的函数,事实上,如果你查看合同的abi并检查什么是idarray,它将是一个接收uint256并返回uint256 的函数

最新更新