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: 
I found your question in searching for the same issue and struggling for hours. For clear definitions the proxy contract A will point to contract B. What fixed it for me was using the ABI of the contract B and the address of contract A. Best of luck!
You have to use the address of main contract and ABi of proxy contract to use main functions of these kind of smart contracts