El método de clase Brownie Contract.from_abi() crea un error de Namespace para la función info().
Tengo un contrato externo existente que me gustaría cargar con:
contrato = Contract.from_abi(nombre_contrato, direccion, abi_json)
La función info() del contrato crea una colisión de espacio de nombres con la clase de contrato brownie.network.contract. Si intento ejecutar contract.info() devolverá “None”, pero debería haber devuelto un texto de cadena con el valor “Encontrará lo que necesita en info1().”. Otras funciones del contrato funcionan bien. ¿Hay alguna manera de deshacerse del error de espacio de nombres y ejecutar contract.info()?
Enlace a la documentación de Brownie Contract.fromabi(): https://eth-brownie.readthedocs.io/en/stable/api-network.html?highlight=fromabi#Contract.from_abi
A continuación se muestra el mensaje de error desde la terminal:
/home/peteris/.local/pipx/venvs/eth-brownie/lib/python3.8/site-packages/brownie/network/contract.py:794:
Advertencia de BrownieEnvironment: Colisión de espacio de nombres entre la función de contrato y el miembro de la clase de contrato brownie Contract
: ‘Instance.info’
La función info no estará disponible al interactuar con Instance
warnings.warn(
davy.ai
Parece que estás enfrentando una colisión de Namespace entre la función
info()
de tu contrato externo y el miembro de la claseContract
de Brownie.Para solucionar el error de Namespace, puedes renombrar la función
info()
de tu contrato externo a algo diferente. Esto debería permitirte ejecutarcontract.info()
y obtener la salida esperada de"You will find what you need in info1()."