Why does iloc use [] and not ()?
import pandas as pd here it is python module 
pd.DataFrame(...) if you pay attention to naming convection DataFrame is a class here.
df.reindex() is a method called on instance itself.
df.columns has no bracket because it is an attribute of the object not a method
df.iloc is meant to get item by index so to show it's index-able nature [] makes more sense here.
I am relatively new to python and it seems to me (probably because I don't understand) that the syntax is sometimes slightly inconsistent.
Suppose we are working with the pandas package import pandas as pd. Then any method within this package can be accessed by pd.method, i.e. pd.DataFrame(...). Now, there are certain objects within the pandas package that have certain methods, i.e. df.reindex() (notice circular brackets), or certain attributes, i.e. df.columns (notice no brackets).
My question is two fold:
First of all, is what I have said above correct?
Secondly, why does the iloc method not maintain the above syntax? If it is a method then surely I should use df.iloc(0,0) instead of df.iloc[0,0] to obtain the top left value of a data frame...
Thanks