奇数语法(继承中的海象运算符)

xil*_*pex 1 python oop inheritance class walrus-operator

我正在查看python的语法,并且您可以在继承中使用海象运算符!不信,我试了一下:

class foo: pass
class bar(foobar := foo): 
    def x(self):
        print("it works!")

b = bar()
b.x()
Run Code Online (Sandbox Code Playgroud)

这不会引发任何语法错误(python 3.8.2)!它有什么用途,它是如何工作的?

Tim*_*ers 5

它没有用 - 所以不要使用它 ;-) 任意表达式是允许的。例如,这更没用:

from random import choice

class C(choice([int, list])):
    pass
Run Code Online (Sandbox Code Playgroud)

玩得开心 ;-)

  • @Xilpex:这是解析器限制的产物。解析器无法在那里处理“namedexpr_test”。同样的限制导致他们必须使用 `test ':=' test` 而不是 `NAME ':=' test`。 (2认同)