Python 函数调用运算符优先级

Python 函数调用运算符优先级,python,function,parsing,expression,Python,Function,Parsing,Expression,据我所知,函数调用优先于属性访问,这让我感到困惑 >>> class cls: def func(self): print("Method") >>> def func(): print("Global Func") >>> obj=cls() >>> obj.func() #1 Method >>> (obj.func)() #2 Method >>&

据我所知,函数调用优先于属性访问,这让我感到困惑

>>> class cls:
    def func(self):
        print("Method")


>>> def func():
    print("Global Func")


>>> obj=cls() 
>>> obj.func() #1
Method
>>> (obj.func)() #2
Method
>>> obj.(func()) #3
SyntaxError: invalid syntax

3是预期的语法错误,但如果函数调用优先于属性访问,为什么1和2会产生相同的结果?

根据该网站链接到的官方Python文档,该网站略有错误:

您会注意到,Python文档中列出的运算符优先级在表中倒数第二个位置,都在同一行:
x[index]
x[index:index]
x(参数…
x.attribute
。正如文件所述

同一框中的运算符具有相同的优先级。。。同一框中的运算符从左到右分组(幂运算除外,幂运算从右到左分组)


您链接到的站点声明相同,只是将这四件事按顺序排列,而不是出于任何原因将它们放在同一个框中。

您希望这有什么不同?我不知道优先级在这里是如何起作用的。我希望obj.func()会产生一个错误,因为它会在func()之后产生obj.Noneevaluated@ColinHicks属性名称必须是字符串FWIW,因此Python这样做是毫无意义的。(当然,我知道你知道这一点,这也是为什么你认为这是一个错误)