_2_ 发表于 2020-4-29 11:17:38

重写 str

本帖最后由 _2_ 于 2020-5-1 09:10 编辑

上代码:

class MyStr(str):
    """重写 str"""
    def __lshift__(self, other: int):
      """
      Return self << other.
      """
      if not isinstance(other, int):
            raise ValueError("'other' must be an integer, not other types.")
      _self = self
      return MyStr(_self)

    def __rshift__(self, other: int):
      """
      Return self >> other.
      """
      if not isinstance(other, int):
            raise ValueError("'other' must be an integer, not other types.")
      _self = self
      return MyStr(_self)

    def __str__(self):
      """
      Return str(self)
      """
      return str.__str__(self)

    def __sub__(self, other):
      """
      Return self - other.
      """
      if other in self:
            raise ValueError("'other' not in 'self'")
      else:
            _self = self.split(other)
            return MyStr("".join(_self))


还有一件事,
我在想 __rlshift__() 和 __rrshift__() 该怎么写,
如果你有想法,欢迎在候选中选择一项,
投票结束后我会参考票数最多的进行编写,
欢迎大家积极投票{:10_298:}

选项1:__rlshift__(): return other << self ; __rrshift__(): return other >> self
选项2:__rlshift__(): return self >> other ; __rrshift__(): return self << other

Twilight6 发表于 2020-4-29 11:18:35

沙发

_2_ 发表于 2020-4-29 11:23:12

@zltzlt @永恒的蓝色梦想 @wuqramy

wuqramy 发表于 2020-4-29 11:24:23

当然是2

永恒的蓝色梦想 发表于 2020-4-29 11:28:47

你只能选2,因为1是错的。

_2_ 发表于 2020-4-29 12:42:16

永恒的蓝色梦想 发表于 2020-4-29 11:28
你只能选2,因为1是错的。

不合逻辑的 1 {:10_256:}

_2_ 发表于 2020-4-30 15:18:43

@weiter @WangJS

_2_ 发表于 2020-5-1 09:10:34

顶……

_2_ 发表于 2020-5-1 16:44:48

再顶……

_2_ 发表于 2020-5-6 12:51:26

Sweet丶 发表于 2020-5-6 13:37:51

帮楼主顶

_2_ 发表于 2020-5-7 11:58:24

aaron.yang 发表于 2020-5-26 18:03:37

猜对了{:10_256:}

lijiachen 发表于 2020-6-20 11:50:17

顶顶顶{:7_146:}
页: [1]
查看完整版本: 重写 str