没有合适的资源?快使用搜索试试~ 我知道了~
Python中new方法的详解
0 下载量 105 浏览量
2020-09-19
17:43:12
上传
评论
收藏 48KB PDF 举报
温馨提示
试读
1页
今天小编就为大家分享一篇关于Python中new方法的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
资源推荐
资源详情
资源评论
Python中中new方法的详解方法的详解
今天小编就为大家分享一篇关于Python中new方法的详解,小编觉得内容挺不错的,现在分享给大家,具有很
好的参考价值,需要的朋友一起跟随小编来看看吧
new_ 方法是什么?方法是什么?
__new__方法其实就是创建对象的方法
new()方法是在类准备将自身实例化时调用。
一个类可以有多个位置参数和多个命名参数,而在实例化开始之后,在调用 init()方法之前,Python首先调用new()方法:
def new(cls, *args, **kwargs):
…
第一个参数cls是当前正在实例化的类。
如果要得到当前类的实例,应当在当前类中的new()方法语句中调用当前类的父类 的new()方法。
例如,如果当前类是直接继承自object,那当前类的new()方法返回的对象应该为:
def new(cls, *args, **kwargs):
…
return object.new(cls)
通常来说,当前类开始实例化时,new()方法会返回cls(cls指代当前类)的实例,然后该类的init()方法作为构造方法会接收这
个实例(即self)作为自己的第一个参数,然后依次传入new ()方法中接收的位置参数和命名参数。
注意:如果new()没有返回cls(即当前类)的实例,那么当前类的init()方法是不会被调用的。
如果new()返回其他类的实例,那么只会调用被返回的那个类的构造方法。
class Foo(object):
def init(self, *args, **kwargs):
pass
def new(cls, *args, **kwargs):
return object.new(Stranger, *args, **kwargs)
class Stranger(object):
pass
foo = Foo()
print(type(foo))
》》》》<class ‘main.Stranger'>
因此可以这么描述new()和ini()的区别,在新式类中new()才是真正的实例化方法,为类提供外壳制造出实例框架,然后调用该框
架内的构造方法init()使其丰满。
如果以建房子做比喻,new()方法负责开发地皮,打下地基,并将原料存放在工地。
而init()方法负责从工地取材料建造出地皮开发招标书中规定的大楼,init()负责大楼的细节设计,建造,装修使其可交付给客
户。
总结总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
如果你想了解更多相关内容请查看下面相关链接
资源评论
weixin_38740397
- 粉丝: 6
- 资源: 854
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功