鱼C论坛

 找回密码
 立即注册
查看: 4076|回复: 4

[已解决]python 41讲构造与析构 的__new__方法问题

[复制链接]
发表于 2018-2-1 14:25:29 | 显示全部楼层 |阅读模式
50鱼币
小甲鱼老师的例子是:
class Capstr(str):
        def __new__(cls,string):
                string=string.upper()
                return str.__new__(cls,string)

1,小甲鱼说__new__方法的返回值应该是一个实例对象,但例子中的返回的是str.__new__(cls,string)
按照我的理解返回的是str类中的__new__方法啊!(也就是是返回的不是一个实例对象)

2,另外本例中重写的是Capstr类中的__new__方法还是str 类中的__new__方法啊

3,总之对__new__魔法各种不理解,希望大神如果有时间的话可以教教我

鱼币50献上谢谢!!!!
最佳答案
2018-2-1 14:25:30
1.str类的__new__方法返回的是一个实例对象,因此Capstr类的__new__方法就是那个str类的返回的
2.当然是Capstr类的啊

最佳答案

查看完整内容

1.str类的__new__方法返回的是一个实例对象,因此Capstr类的__new__方法就是那个str类的返回的 2.当然是Capstr类的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-1 14:25:30 | 显示全部楼层    本楼为最佳答案   
1.str类的__new__方法返回的是一个实例对象,因此Capstr类的__new__方法就是那个str类的返回的
2.当然是Capstr类的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-1 14:28:07 | 显示全部楼层
1 str.__new__(cls,string) 这个函数本身返回的就是一个实例对象
2 并不是,因为除了str本身的__str__还有一个操作:将字符变大写
3 一般都不用考虑这个函数了,很少使用的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-1 16:15:24 | 显示全部楼层
太难了,这并不是新手问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-2 14:02:03 | 显示全部楼层
ORCAL 发表于 2018-2-1 16:15
太难了,这并不是新手问题

可我在python交流里发不了贴啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 04:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表