类中self和__init__的初理解

__init__方法

  • __init__方法的第一参数永远是self,表示创建的类实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身
  • 有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器会自己把实例变量传进去
    eg.以下的Student类实例化

class Student(object):

    def __init__(self, name, score):

        self.name = name

        self.score = score

self理解

self是指类实例本身,self.name 是该student实例对象独有的。而name是外部传来的参数,不是Student类所自带的。
故,self.name = name的意思就是把外部传来的参数name的值赋值给student实例对象自己的属性变量self.name。
————————————————

我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。

class Person:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        print Hello, my name is, self.name

p = Person(Swaroop)
p.sayHi()     #Hello, my name is Swaroop
q = Person('Swaroop')

等价于

q=object.__new__(Person) 
Person.__init__(q,'hello')

即__init__作用是初始化已实例化后的对象,把外部传来的Swaroop参数传给name,此处的name即为实例q的属性。

注意:

子类可以不重写__init__,实例化子类时,会自动调用超类中(自我理解为父类)已定义的__init__
但如果重写了__init__,实例化子类时,则不会隐式的再去调用超类中已定义的__init__

参考学习文档:

https://blog.csdn.net/qq_39314932/article/details/80716295
https://www.cnblogs.com/insane-Mr-Li/p/9758776.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值