浅谈Python类__init__ and __super__ 的一些理解

由于在逛博客中看到了相关内容,但是许久不看有些遗忘,故在此记录一番,望温故而知新。

class Parent(object):    #无继承则写object
    def __init__(self, name, height):
        self.name = name
        self.height = height
        print("create an instance of:", self.__class__.__name__)
        #._class_方法将指向该实例对应的类,._name_方法将调用类中的_name_属性。注:_name_属性与parameters:name不是同一个东西
        print("name attribute is:", self.name)
        print('height attribute is:',self.height)

class Child(Parent):     #继承Parent类
    # 这里的init是初始化了Child instance,其中输入的parameter可以比父类中需要输入的parameter多
    # 但是如果想要利用 比父类多的para,在后面得加上 比如self.x = x进行初始化
    def __init__(self,name,height=180,x = 4, weight= 100):  #此处函数被重写了,所以要是想要父类原本功能,必须用super函数。直接不写则不会重写此函数。
        print("call __init__ from Child class")
        # super 里传入的属性要和父类一样
        super(Child,self).__init__(name = "data from Child",height = height)   #要将子类Child和self传递进去
        self.x = x     #额外的para,故额外初始化
        self.weight = weight
        
c = Child('wang',50,1,60)
print('name:',c.name)
print('height:',c.height)

输出结果:

call __init__ from Child class
create an instance of: Child
name attribute is: data from Child
height attribute is: 50
name: data from Child    #由于初始化过程中,super语句的存在,所以无论name是什么,都只会被赋值为‘data from child’
height: 50

首先子类中init函数重写了,所以不用管父类初始化函数,直接启动子类的初始化_init_函数,先输出call init from Child class。然后,由于使用了super()类调用父类init,所以输出create an instance of这句话。此时的类仍是子类(只不过调用了父类的函数),所以输出的类名仍是子类。而后再输出两个print语句。最后,是对象初始化后的两个额外输出语句。从而,完成整个运行过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值