Python中,定义类创建和使用实例,单下划线和双下划线,__init__构造函数等

定义类创建实例
举个例子,

class Foo(object):
    def __init__(self, x, y=0):
        self.x = x
        self.y = y
foo = Foo(1,y=2)

对Foo的调用到底调用了什么函数或方法?
第一反应肯定是__init__方法,但仔细想想并不是正确答案,因为它没有返回一个对象,但是调用Foo(1,y=2)确实返回了一个对象,其实它的调用顺序是这样的:

  • 第一步,Foo(1,y=2)等价于Foo.call(1,y=2)
  • 第二步,既然Foo是一个type的实例,Foo.call(1,y=2)实际调用的是type.call(Foo,1,y=2)
  • 第三步,type.call(Foo,1,y=2)调用type.new(Foo,1,y=2),然后返回一个对象。
  • 第四步,obj随后通过调用obj.init(1,y=2)被初始化。
  • 第五步,obj被返回。

总的来说,__new__方法为对象分配了内存空间,构建它为一个“空"对象然后__init__方法被调用来初始化它。
让我们来看看__new__方法,它负责实际对象的创建方法,分配内存空间并返回该对象。用它来实现单例模式是很方便的。

"""
__new__方法
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值