mmx669 2021-12-21 16:18 采纳率: 94.4%
浏览 17
已结题

python中,请问定义子类,其中括号中的基类第一个字母没有用大写字母,new魔法方法在此处的作用

问题遇到的现象和发生背景

python中,请问定义子类,其中括号中的基类第一个字母没有用大写字母,对不对
new魔法方法的作用是什么,能否结合代码讲解过程

问题相关代码,请勿粘贴截图
>>> class CapStr(str):
    def __new__(cls,string):
        string = string.upper()
        return str.__new__(cls,string)

    
>>> a = CapStr("I love FishC")
>>> a
'I LOVE FISHC'

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 陈年椰子 2021-12-21 19:23
    关注
    python中,请问定义子类,其中括号中的基类第一个字母没有用大写字母,对不对
    对于这个例子是对的, str 是类 , 用Str 反而会出错
    
    new魔法方法的作用是什么,能否结合代码讲解过程
    
    __new__方法使用和功能:
        
        1、__new__方法用于给类创建对象,并且返回这个对象。
        2、因为给类创建实例,所以至少传递一个参数cls,参数cls 代表实例化的类,此参数在实例化时由Python解释器自动提供
        3、在类实例化是内部创建实例的函数,并返回这个实例,所以他是实例中最先调用的方法,一般不要认为的定义该方法
        4、创建实例返回实例,所以要有返回值,return父类__new__出来的实例,或者直接是object的__new__出来的实例
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 创建了问题 12月21日

悬赏问题

  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 正弦信号发生器串并联电路电阻无法保持同步怎么办
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序