[問題] 實踐功能限定的str

作者: icetofux   2023-01-12 18:36:35
如果我需要一種特殊的str,所支援的操作及方法都和內建型態的str 相同,但是:
1.比較時不分大小寫
2.字串長度不可大於30個字元
3.能與內建型態的str 進行比較(==)、連接(+)等操作
目前直覺想到的作法是繼承str ,在__eq__裡將比較對象跟本身都轉為小寫再進行比較,以及__init__跟__add__裡檢查字串長度,若大於30個字元就拋出例外。因為我沒辦法預測使用者會呼叫其他哪些方法,所以也得一一檢查所有從str 繼承而來的方法是否能符合上面條件,想起來應該就是個大工程。
請問是否有更好的方式可以完成上面的需求呢?
謝謝。
作者: lycantrope (阿寬)   2023-01-12 19:17:00
就算繼承了也無法達成你的需求繼承collections.UserString 後改寫init eq lthttps://pastebin.com/EhY5SJda
作者: a129924 (EnKimi)   2023-01-12 21:19:00
樓上好人耶 太神啦

Links booklink

Contact Us: admin [ a t ] ucptt.com