Python构造函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python构造函数相关的知识,希望对你有一定的参考价值。
参考技术A类是对象的模板,是抽象的。
构造函数 init 是Python魔术方法之一,如图魔术方法
我们通过类模版去创建类的实例对象,然后再调用类定义的功能。
那实例对象的属性是通过什么来初始化的?
这时候Python引入来构造函数 init
构造函数,会在创建实例对象之后Python会自动执行此方法,把初始化的属性特点放到实例对象里。
通过前面的学习,我们知道一个python对象包含三个部分:id(识别码),type(对象类型),value(对象的值)
那么我们进一步深入对象包含的三部分:
我们通过类创建实例对象后,需要定义构造函数 init ()方法。
构造方法用于执行实例对象的初始化工作,即对象创建之后,初始化当前对象的相关的属性,无返回值
构造函数重点 :
我们通过栗子来学习构造函数的过程
构造函数初始化实例对象过程如下:
1.Animal类会通过默认的 new ()方法为实例对象在堆内存中为开辟一个空间
敲黑板,重点来啦~
拓展:
我们今天学习了构造函数 init (),其在创建对象之后被Python自动调用初始化实例对象属性数据值,无返回值,并且构造函数不能被显示调用。
创建对象时,如果需要,构造函数可以接受参数。当创建没有构造函数的类时,Python会自动创建一个不执行任何操作的默认构造函数。
每个类必须有一个构造函数,即使它只依赖于默认构造函数
好啦,以上是本期内容,欢迎大佬评论区指正~
python特性小记
一、关于构造函数和析构函数
1、python中有构造函数和析构函数,和其他语言是一样的。如果子类需要用到父类的构造函数,则需要在子类的构造函数中显式的调用,且如果子类有自己的构造函数,必然不会自动调用父类的构造函数;但是对于没有构造函数的子类来说,则会自动继承父类的构造函数,且子类总会默认继承多个父类中的第一个父类的构造函数。备注:一般来说,子类应该继承父类的所有属性和方法,可将子类中的构造方法理解为覆盖重写了父类的构造方法。
2、析构函数和其他语音一样,在调用del时,才会调用析构函数。应该显示调用
二、关于重载和覆盖
python中没有重载的概念,不能用和类同名的多个函数依照参数个数或者参数名的不同实现重载。python中,相同名字的函数,总是会默认的覆盖掉前一个函数,这并不方便,但就严谨性来说,增加了可读性可理解性。我认为python之所以没有重载,一是因为python是动态类型的语言,既然参数只有在运行时才确定,那重载对于python应该是毫无意义的;二是python不允许缺少参数,这点也使得重载对于python毫无意义。备注:c#中可以在父类中写一个虚方法,然后在子类中使用override重载该方法,调用虚方式时,实际上会调用重写后的方法。
三、语言类型
毫无疑问的是,python是动态的强类型语言,如果说静态,目前我见过的只有在列表list中是静态的。值传递传递的是值(赋予了新的内存一个值),指针传递传递的是指向内存的指针,这个很好理解。
四、关于多态
简单来说,多态就是一个类的多个表现形式或者表现状态。python不支持多态,一般用子类继承父类后重新函数,这其实又是另一个对象了。
以上是关于Python构造函数的主要内容,如果未能解决你的问题,请参考以下文章