pandas里面loc方法是属性方法有@property装饰器,但是为什么df.loc()系统不报 " is not callable"的错?

代码如下;

import pandas as pd
import numpy as np
data = {'name': ['Joe', 'Mike', 'Jack', 'Rose', 'David', 'Marry', 'Wansi', 'Sidy', 'Jason', 'Even'],
        'age': [25, 32, 18, np.nan, 15, 20, 41, np.nan, 37, 32],
        'gender': [1, 0, 1, 1, 0, 1, 0, 0, 1, 0],
        'isMarried': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}

labels = ['name', 'age', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df = pd.DataFrame(data, index=labels)
df.loc()

按住CTRL鼠标点击loc,定位到loc函数,发现loc是属性方法,带有@property装饰器如图所示:

img

问题:
既然loc是属性方法,那代码中 df.loc()应该报错 如“”* is not callable“才对吧?为什么系统不会报错?

后面不是有个 ->吗,它定义了返回类型,你可以点进去看看,不过直接看下面return的是什么就行。对象.属性 这就已经得到一个返回值了,如果结果是如int类型这样的数字123,那肯定123()不行,但这里返回的是_LocIndexer处理实例化后的对象,那它后面是能加括号的。 希望能帮助到你,谢谢。