__init__方法

init是为实例对象添加属性的一个方法,也叫构造器、魔术方法。

举个例子,我们创建了一个学生类,实例化三个学生,如果没有init,我们可以这样给每个学生对象添加属性。

class Student():

  classes = "oldboy"

obj1 = Student()  # 实例化一个学生的对象

obj2 = Student()

obj3 = Student()


obj1.name = "tianjianyu"  # 为每一个对象定制自己的特征属性

obj1.age = 22

obj1.sex = "male"

obj2.name = "lishen"

obj2.age = 23

obj2.sex = "male"

obj3.name = "wanghao"

obj3.age = 32

obj3.sex = "male"

但是这样重复了很多代码,我们可以写一个函数,同样也可以达到添加属性的目的


class Student():

    classes = "oldboy"

obj1 = Student()  # 实例化一个学生的对象

obj2 = Student()

obj3 = Student()

def chushihua(obj, x, y, z):

    obj.name = x

    obj.age = y

    obj.sex = z

chushihua(obj1, "tianjianyu", 22, "male")

chushihua(obj2, "lishen", 23, "male")

chushihua(obj3, "wanghao", 22, "male")

有了上一步的操作,我们还可以把这个函数放到类里边,就像这样


class Student():

    classes = "oldboy"


    def chushihua(obj, x, y, z):

        obj.name = x

        obj.age = y

        obj.sex = z


obj1 = Student()

Student.chushihua(obj1, "tianjianyu", 22, "male")

obj2 = Student()

Student.chushihua(obj2, "lishen", 22, "male")

obj3 = Student()

Student.chushihua(obj3, "wanghao", 22, "male")

到这里,是不是跟我们的____init____方法很像了呢

class Student():

    classes = "oldboy"

    def __init__(self, x, y, z):  # self等同于obj可以改变,但一般约定是self,x=name,y=age,z=sex

        self.name = x

        self.age = y

        self.sex = z


obj1 = Student("tianjianyu", 22, "male")  # Student.__init__(obj1,"tianjianyu",22,"male)

obj2 = Student("lishen", 23, "male")

obj3 = Student("wanghao", 33, "sex")

总结:init方法其实就是python为我们提供的一个给实例对象添加属性的方法,不必我们再去单独操作,在实例化对象的就为对象添加属性

注意:实例化的时候第一步是创建对象,然后才会检查是否实现init方法,当发现内部存在此方法,init方法将会被调用,实例对象作为第一个参数传进去,也就是self。

当我们定义init方法的时候,这个方法不应有返回值,因为创建对象的时候会返回实例对象本身,如果定义了返回值,就会与之冲突

你可能感兴趣的:(__init__方法)