为什么我不能使用海象运算符:=
来分配属性?它在分配给局部变量时起作用:
my_eyes = ["left", "right"]
if saved_eye := my_eyes.index("left"):
print(saved_eye)
# outputs >>> 0
但是,如果我尝试分配给对象属性,则会出现语法错误:
class MyEyes:
def __init__(self):
self.eyes = ["left", "right"]
self.saved_eye = None
def ohyes(self):
if self.saved_eye := self.eyes.index("left"):
print(self.saved_eye)
x = MyEyes()
x.ohyes()
# raises
# >>> if self.saved_eye := self.eyes.index("left"):
# >>> SyntaxError: cannot use assignment expressions with attribute
我的意思是我可以使用临时局部变量绕过错误,但为什么会发生这种情况?我相信 100% 这是一种合法的语法。