python中__init__()方法的含义

python类中定义的函数称为方法,init()方法本质也是一个函数。这个函数的作用是初始化实例后的对象。
具体如下例:
init()方法的作用是初始化实例后的对象cqueue。

class CQueue:
    #类中的函数称为方法 ,这里的__init__()方法在类实例化是被自动调用。若类定义了__init__()方法,类的实例化操作会自动调用__init__方法。
    #__init__方法可以有参数,参数通过__init__()传递到类的实例化操作上。self代表的是类的实例,而非类。
    #类的方法和普通函数的区别只有一个,类的方法必须有一个额外的第一个参数名称,按照惯例它的名称是self。
    def __init__(self):
        self.A,self.B=[],[]
  
    def appendTail(self,value:int)->None:
        self.A.append(value)

    def deleteHead(self)->int:
        if self.B:
            return self.B.pop()
        if not self.A:
            return -1
        while self.A:
            self.B.append(self.A.pop())
        print(self.B)
        return self.B.pop()

if __name__=="__main__":
    #类CQueue的实例化,这里的括号()不能丢。
    #__init__()方法的作用是初始化实例后的对象cqueue。
    cqueue=CQueue()
    #调用类中的appendTail()函数,增加元素。
    cqueue.appendTail(243)
    cqueue.appendTail(2)
    cqueue.appendTail(4)
    cqueue.deleteHead()
    cqueue.deleteHead()

有无__init__的区别,结论如下:
1.在类实例化时,如果类中有__init__方法,此时调用__init__方法。
2.若该类没有父类,也没有__init__方法,则不会有任何操作。即对象不会被初始化。
3.若该类有父类,则去调用该类的父类中__init__方法。
具体实验如下:
定义三个类:CQueue、student、sum,其中CQueue、student是sum的父类。
在这里插入图片描述
实验1说明:__init__方法的作用是初始化实例的类。
实验2说明:当子类没有__init__方法时,会在父类中进行初始化。
实验3,4说明:sum(student,CQueue ),子类sum没有__init__方法时,会调用父类,并且调用父类中排在前面的父类,这里student类在CQueue前,所以调用student类中的__init__方法初始化实例的类。
实验5说明:在类及其父类均没有初始化时,实例化的类不会被初始化。
实验1代码:

class CQueue:
    #类中的函数称为方法 ,这里的__init__()方法在类实例化是被自动调用。若类定义了__init__()方法,类的实例化操作会自动调用__init__方法。
    #__init__方法可以有参数,参数通过__init__()传递到类的实例化操作上。self代表的是类的实例,而非类。
    #类的方法和普通函数的区别只有一个,类的方法必须有一个额外的第一个参数名称,按照惯例它的名称是self。
    def __init__(self):
        self.A,self.B=[],[]

    def appendTail(self,value:int)->None:
        self.A.append(value)

    def deleteHead(self)->int:
        if self.B:
            return self.B.pop()
        if not self.A:
            return -1
        while self.A:
            self.B.append(self.A.pop())
        print(self.B)
        return self.B.pop()
class student:
        def __init__(self):
            print("测试输出1")
        def test1(self):
            print("测试输出2")

class sum(student,CQueue ):
        def __init__(self):
            print("测试输出3")
        def test2(self):
            print("测试输出4")
if __name__=="__main__":
    #类CQueue的实例化,这里的括号()不能丢。
    s=sum()

实验结果:

在这里插入图片描述
实验2代码:

class CQueue:
    #类中的函数称为方法 ,这里的__init__()方法在类实例化是被自动调用。若类定义了__init__()方法,类的实例化操作会自动调用__init__方法。
    #__init__方法可以有参数,参数通过__init__()传递到类的实例化操作上。self代表的是类的实例,而非类。
    #类的方法和普通函数的区别只有一个,类的方法必须有一个额外的第一个参数名称,按照惯例它的名称是self。
    def __init__(self):
        self.A,self.B=[],[]

    def appendTail(self,value:int)->None:
        self.A.append(value)

    def deleteHead(self)->int:
        if self.B:
            return self.B.pop()
        if not self.A:
            return -1
        while self.A:
            self.B.append(self.A.pop())
        print(self.B)
        return self.B.pop()
class student:
        def __init__(self):
            print("测试输出1")
        def test1(self):
            print("测试输出2")

class sum(student,CQueue ):
        # def __init__(self):
        #     print("测试输出3")
        def test2(self):
            print("测试输出4")

if __name__=="__main__":
    #类CQueue的实例化,这里的括号()不能丢。
    s=sum()

实验结果:

在这里插入图片描述
实验3,4,省略。
实验5:

class CQueue:
    #类中的函数称为方法 ,这里的__init__()方法在类实例化是被自动调用。若类定义了__init__()方法,类的实例化操作会自动调用__init__方法。
    #__init__方法可以有参数,参数通过__init__()传递到类的实例化操作上。self代表的是类的实例,而非类。
    #类的方法和普通函数的区别只有一个,类的方法必须有一个额外的第一个参数名称,按照惯例它的名称是self。
    def __init__(self):
        self.A,self.B=[],[]

    def appendTail(self,value:int)->None:
        self.A.append(value)

    def deleteHead(self)->int:
        if self.B:
            return self.B.pop()
        if not self.A:
            return -1
        while self.A:
            self.B.append(self.A.pop())
        print(self.B)
        return self.B.pop()
class student:
        # def __init__(self):
        #     print("测试输出1")
        def test1(self):
            print("测试输出2")

class sum(student,CQueue ):
        # def __init__(self):
        #     print("测试输出3")
        def test2(self):
            print("测试输出4")

if __name__=="__main__":
    #类CQueue的实例化,这里的括号()不能丢。
    s=sum()

实验结果:
在这里插入图片描述
从实验结果可以看出,没有任何操作。


版权声明:本文为qq_37993640原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。