在不可变的内部修改可变的Python方式

在不可变的内部修改可变的Python方式,python,class,object,default,internals,Python,Class,Object,Default,Internals,假设我有一个类,它对外部世界的行为类似于int,但实际上是一个可变对象,在几个结构中有一个固定的位置。如果n是我的对象,我现在可以通过编写n.update(34)来更新它,但我发现我总是想写n=34。我浏览了一遍,没有看到类似于uu赋值uu或u值uu属性的东西,它可以让我捕获=操作符,并允许我更新我的对象,而不是将int赋值给变量n,从而丢弃我的对象。更好的是,当一个可变表位于元组t=(m,n)中时,我想用t[1]=34更新我的可变表,但Python认为这是试图修改一个不可变表 所以我想答案是,

假设我有一个类,它对外部世界的行为类似于int,但实际上是一个可变对象,在几个结构中有一个固定的位置。如果n是我的对象,我现在可以通过编写
n.update(34)
来更新它,但我发现我总是想写
n=34
。我浏览了一遍,没有看到类似于uu赋值uu或u值uu属性的东西,它可以让我捕获
=
操作符,并允许我更新我的对象,而不是将int赋值给变量n,从而丢弃我的对象。更好的是,当一个可变表位于元组
t=(m,n)
中时,我想用
t[1]=34
更新我的可变表,但Python认为这是试图修改一个不可变表


所以我想答案是,根据我所能找到的那份文件的一小部分,我所尝试的不是python。所以,如果我不能按照我想要的方式去做,那么下一个最好的办法是什么呢?这样,如果有人有一天必须维护我的代码,它就不会太令人讨厌了。

基本的
obj.value=newvalue
基本上是最好、最容易理解的方法。正如您所猜测的,在Python中不可能重写赋值

你可以在你的类上实现
\uuu call\uu()
,这样你就可以做
obj(newvalue)
。然而,对于普通读者来说,这根本不清楚这是一种重新分配


另一个想法是实现
\uuu ilshift\uuu()
,这样您就可以执行
obj。感谢您的想法,以及我对这些概念有限的理解的改进。我将暂时不讨论代码,因为我仍然有实际的工作要做,但是当需要更新时,我会做出决定。