关于__lshift__重载的问题(第041讲:魔法方法:构造和析构)
class Nstr(str):def __lshift__(self, other):
if isinstance(self, str):
self = self + self[: other]
return self
def __rshift__(self, other):
if isinstance(self, str):
self = self[-other: ] + self[: -other]
return self
当我进行如下操作时,a的结果为什么没有被改变,我代码中已经将self = self + self[: other]和 self = self[-other: ] + self[: -other]了,而且我进行a>>3操作时self并未继承上一步a<<3的改变结果,求大神解答~
>>> a = Nstr('I love Fishc!')
>>> a << 3
'ove Fishc!I l'
>>> a >> 3
'hc!I love Fis'
>>> a
'I love Fishc!'
这成功按位移动且返回了就行吧,在将你需要返回的值进行赋值
算数运算符返回的应该是运行后结果,不是改变原先的对象的值吧
Twilight6 发表于 2020-11-12 17:48
这成功按位移动且返回了就行吧,在将你需要返回的值进行赋值
算数运算符返回的应该是运行后结果,不 ...
那如果我希望在每次操作后将得到的结果赋给a呢,就是a本身随着移位的改变而改变,可以实现吗
页:
[1]