q5226436 发表于 2020-11-12 17:35:35

关于__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:31



这成功按位移动且返回了就行吧,在将你需要返回的值进行赋值

算数运算符返回的应该是运行后结果,不是改变原先的对象的值吧

q5226436 发表于 2020-11-12 17:58:51

Twilight6 发表于 2020-11-12 17:48
这成功按位移动且返回了就行吧,在将你需要返回的值进行赋值

算数运算符返回的应该是运行后结果,不 ...

那如果我希望在每次操作后将得到的结果赋给a呢,就是a本身随着移位的改变而改变,可以实现吗
页: [1]
查看完整版本: 关于__lshift__重载的问题(第041讲:魔法方法:构造和析构)