es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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(

Tags:  , ,

Answer

  1. Avatar for 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 clase Contract 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 ejecutar contract.info() y obtener la salida esperada de "You will find what you need in info1()."

Comments are closed.