web3.py 和布朗尼:为什么 Contract.Struct_array(n) 有效而 Contract.Struct_array[n] 无效?
web3.py and brownie: why does Contract.Struct_array(n) work but Contract.Struct_array[n] doesn't?
里面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 是一个数组,因为它是一个接收参数的函数,并且 returns 它从区块链获得的东西,事实上,如果你查看你的合同的 abi 并检查什么是 id_array 它将是一个接收 uint256 和 return uint256
的函数
里面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 是一个数组,因为它是一个接收参数的函数,并且 returns 它从区块链获得的东西,事实上,如果你查看你的合同的 abi 并检查什么是 id_array 它将是一个接收 uint256 和 return uint256
的函数