__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