Question: Normally I just do this on python:

```
token = web3.eth.contract(address=contract_address, abi=abi)
balance_in_wei = token.functions.balanceOf(wallet).call()

```

However, when the function isn't in the "Read Contract" tab, this code wouldn't work at all.
[![enter image description here](https://i.stack.imgur.com/B4xC2.png)](https://i.stack.imgur.com/B4xC2.png)

The balanceOf function can be found in "Read as Proxy".
[![enter image description here](https://i.stack.imgur.com/pz7oF.png)](https://i.stack.imgur.com/pz7oF.png)

*How could I call this function as proxy in web3 py?* For context, I'm trying to get my balance of USDC: <https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48>

Answer: 
same exact way. Just pretend it's there and it should work. Instantiate the contract with the ABI that you want to call (e.g. the one with balanceOf regardless of it's actually there or not)
I think `balanceOf` returns a `BigNumber` value that needs to be formatted for display purposes. Are you running a formatting function prior to displaying the balance? Formatting functions take a `decimals` argument. Standard ERC-20 tokens implement 18 decimals *but* the USDC contract only implements 6 decimals. So the formatter function args might need to be adjusted.

<https://docs.openzeppelin.com/contracts/3.x/erc20#a-note-on-decimals>
<https://docs.ethers.io/v5/api/utils/display-logic/#utils-formatUnits>