python--继承父类

先看一段代码:

class A(object):
    def __init__(self, name):
        self.name = name

    def foo(self):
        return self.name

class B(A):
    '''
    B继承A类
    '''
    def __init__(self, name, id):
        A.__init__(self, name)
        self.id = self.id

    def foo1(self):
        return self.id

A._init_(self, name) 这种初始化父类的方式应该是经常可以看到的.但为什么要这样写呢?表面上,A是一个未实例化的类,为什么可以调用_init_方法?
想要了解其中的原因,首先要知道_init_实例化一个对象,要实例化一个对象,最根本的也得这个对象存在,那么怎样创建对象?python在调用init之前调用了一个名为_new_的方法,就是这个方法创建的对象._new_是一个静态方法

>>> b = B.__new__(B)   # 创建一个B类的对象
>>> b
<B object at 0x7f7f0b939750>  # 对象已经建立了
>>> b.__dict__   # 查看对象的属性字典
{}  # 字典为空值
>>> b.__init__(name='chim', id=18) # 实例化对象
>>> B.__init__(b, name='chim', id=18) # 或者这样实例化对象

在继承实例化b之前对象已经创建了,所以B可以调用_init_()方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值