class CNewStr(str):
pass
能否重写python的str类或方法,使得str(1)返回的是一个CNewStr类,注意CNewStr是继承str类的
能否重写python的str类或方法,使得str(1)返回的是一个CNewStr类,注意CNewStr是继承str类的
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-03-08 14:21关注
麦田的笑话 下午好🌅🌅🌅
本答案参考ChatGPT-3.5在Python中,你不能直接重写内置类型如
str
的构造方法来改变其行为。但是,你可以创建一个函数或者自定义类装饰器来间接实现这个需求,使得调用该函数或使用装饰器时将整数转换为你的CNewStr
类。下面是一个通过创建函数实现的例子:
class CNewStr(str): def __new__(cls, value): # 这里可以添加任何额外的构造逻辑 return super().__new__(cls, value) def custom_str(x): """ 将整数转换为CNewStr """ return CNewStr(str(x)) # 使用方式 new_string = custom_str(1) assert isinstance(new_string, CNewStr) # 确保返回的是CNewStr类型
注意: 尽管如此,这种方式并不能改变全局所有
str(1)
的行为,只能通过调用custom_str
函数来得到CNewStr
实例。对于Python内置行为的全局修改通常不被推荐,因为这可能会导致意料之外的副作用和兼容性问题。解决 无用评论 打赏 举报
悬赏问题
- ¥15 气象网格数据与卫星轨道数据如何匹配
- ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
- ¥15 微软账户问题不小心注销了好像
- ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
- ¥20 关于web前端如何播放二次加密m3u8视频的问题
- ¥15 使用百度地图api 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开