开个丸笑 发表于 2018-2-1 14:25:29

python 41讲构造与析构 的__new__方法问题

小甲鱼老师的例子是:
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献上谢谢!!!!

timeislife 发表于 2018-2-1 14:25:30

1.str类的__new__方法返回的是一个实例对象,因此Capstr类的__new__方法就是那个str类的返回的
2.当然是Capstr类的啊

BngThea 发表于 2018-2-1 14:28:07

1 str.__new__(cls,string) 这个函数本身返回的就是一个实例对象
2 并不是,因为除了str本身的__str__还有一个操作:将字符变大写
3 一般都不用考虑这个函数了,很少使用的。

ORCAL 发表于 2018-2-1 16:15:24

太难了,这并不是新手问题{:5_90:}{:5_90:}

开个丸笑 发表于 2018-2-2 14:02:03

ORCAL 发表于 2018-2-1 16:15
太难了,这并不是新手问题

可我在python交流里发不了贴啊{:5_95:}
页: [1]
查看完整版本: python 41讲构造与析构 的__new__方法问题