如何在python中重新定义=?

feg*_*ege 3 python methods operator-overloading operators redefine

当我使用时,我想知道Python调用了什么=:

a = b
Run Code Online (Sandbox Code Playgroud)

我在哪里查找这些信息?

我会用my ="赋值给变量"

a会有类似的行为

l=list()  
l.append(1)  
l.append(2)  
l.append(3)  
l1=l  
l1[2] = ’B’  
print(l1)  
[1, 2, ’B’]  
print(l)  
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 13

你无法=在Python中重新定义.它总是将右侧的对象绑定到左侧的名称.

请注意,这与例如C++完全不同,其中=运算符通常涉及将数据复制到目标变量.Python没有C++所具有的变量.Python具有可绑定到对象的名称.

  • 如果要使用C++,请使用C++. (6认同)
  • 最好使用替代语法使其明确表示数据已被复制.重新定义`=`只会让读取代码的人感到困惑. (2认同)

kwa*_*ord 8

您无法重新定义=,但您可以重新定义:

a[c] = b
   or
a.c  = b
Run Code Online (Sandbox Code Playgroud)

通过实施__setitem____setattr__分别执行此操作.对于属性,它通常更适合使用property,但__setattr__有其用途.


Mar*_*ler 5

你无法=在Python中覆盖.您可以在文档中看到可以覆盖的特殊方法列表,并且=该列表上没有任何内容可供匹配.

Python总是将名称空间中的名称绑定到值.这意味着Python没有"赋值给变量",它只有"绑定到值":没有数据是副本,而是另一个引用被添加到相同的值.