作者icetofux ()
看板Python
标题[问题] 实践功能限定的str
时间Thu Jan 12 18:36:35 2023
如果我需要一种特殊的str,所支援的操作及方法都和内建型态的str 相同,但是:
1.比较时不分大小写
2.字串长度不可大於30个字元
3.能与内建型态的str 进行比较(==)、连接(+)等操作
目前直觉想到的作法是继承str ,在__eq__里将比较对象跟本身都转为小写再进行比较,以及__init__跟__add__里检查字串长度,若大於30个字元就抛出例外。因为我没办法预测使用者会呼叫其他哪些方法,所以也得一一检查所有从str 继承而来的方法是否能符合上面条件,想起来应该就是个大工程。
请问是否有更好的方式可以完成上面的需求呢?
谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.136.85.6 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1673519801.A.EBB.html
1F:推 lycantrope: 就算继承了也无法达成你的需求 01/12 19:17
2F:→ lycantrope: 继承collections.UserString 後改写init eq lt 01/12 19:29
谢谢神人,连测试都附上了。
4F:推 a129924: 楼上好人耶 太神啦 01/12 21:19
※ 编辑: icetofux (111.240.215.213 台湾), 01/12/2023 22:25:47