|
|
发表于 2017-1-24 09:59:17
|
显示全部楼层
本帖最后由 Kiopler 于 2017-1-30 20:52 编辑
首先申明...本人也是新人 也还有好多不明白的地方,如果有错...请担待
1. CapStr是str的子类,str是父类(就是爸爸和儿子的关系,基类就是爸爸,子类就是儿子),如果你学了小甲鱼的课你就知道...子类可以直接调用基类的方法, 转换成通俗的话来说就是儿子可以使用爸爸所有的东西
回答你的问题:应该, str本质上也是个类
PS:如果CapStr()的括号里没有str也就是说没有继承str类,那么其实也是继承了一个类,就是object类,这个object可以不写出来,默认的,因为__new__都是object类的后代,据说这是历史问题,具体我也不清楚
2.__new__魔法方法指的是第一个被执行的魔法方法,它的作用是给__init__魔法方法传递类实例对象(这个类实例对象会传入cls,__new__在把cls传递给__init__的self),如果__new__不进行传递或者没有类实例对象,那么__init__魔法方法也不会执行
现在回答你的问题:string是str这个类的对象
3.__new__方法不一定要返回一个对象,如果需要__init__方法执行那么就需要返回一个对象,所以你说的也是对的....不然要__init__来干嘛..
回答你的问题:...,你都说了__new__需要返回一个实例对象,那后半个问题没什么意义了... 你可以
return 父类.__new__(cls,string) 也可以 return object.__new__(cls,string) ,具体看你是否有继承父类
用小甲鱼老师的一句话就是...python无处不对象... .....实例当然也可以是对象了...
本人也没学多久....如有错误...请见谅哈...
|
评分
-
查看全部评分
|