今天我们来学习下如何自定义方法,以及编写python类文件,在公司中我们不可能一个python文件几千几万行代码,不利于代码的维护及排查问题的及时性,而面向对象则是解决了这一问题!
def(方法的定义)
在python中,我们使用def这个关键字进行自定义方法,可以供其他方法,其他类的调用,而不需要再写一次这个方法的内容了。
以上我们可以看到一个简单的方法定义,方法后面必须要加'()'。上面这个方法的主要内容就是打印一个字符串,如果我们需要一个方法里面的某个值传给调用他的代码,那么我们可以使用return进行返回:
运行以上代码,我们可以看到控制台并未任何输出,因为我们需要对这个方法赋值给某个变量,可以通过打印print看到,方法返回的内容。
接下来我们可以看一个实例:
上述中的e就是test()方法返回的值,所以e的值就为a+b=3。
刚才所说,方法后面都是需要加括号,那么这个括号里面是否可以传值呢,答案肯定是可以的!
我们可以看到方法括号里传了值(形参:形式上的参数),那么我们在调用这个方法的时候,括号里面就需要传参数,否则将会报错,缺少参数。
方法括号内还可以传不定长参数,就是不明确具体传的参数个数,根据实际调用情况进行传参:
我们可以看到不定长参传参的方式*args,是以tuple元组的形式进行传参,还可以使用**args,我们也可以查看到,参数是以dict字典的形式进行的传参!
Class(面向对象)
class就是代表着一个类,什么是类,你可以把它理解为一个家庭,家庭里面包含了方法,不同类型的方法则是不同的家庭成员,但是对外又是一个家庭的,只有一个户口本,类和家庭一样可以继承,爷爷生爸爸,爸爸生了你,分别最后又组成了新的家庭。
上面我们可以看到,定义了一个类,这个类,里面包含了eat(),drink(),sleep()等方法,对类进行一个实例,然后通过实例去调用这个类里面的方法。
类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样:
我们可以看到init方法中的name,在前面加了self之后,可以直接被其他方法所调用,那么这个self是什么呢,实际就是类里面的内部的实例,不需要氮素对类进行实例,直接加self之后,就可以传给其他的方法。
类的继承
所谓类的继承就类似于家族中的基因遗传,父类的一些方法及元素,可以供子类使用
我们可以看到下面的子类继承了上面的父类,不但可以调用自身的方法,同样可以调用父类中的方法。子类还可以继承父类的子类:
我们可以看到tiger继承了animal,然后ele则又继承了tiger,那么类ele则可以使用上面两个类中的所有方法。
类中的方法也存在集中不同的形态,静态类方法,类方法,属性等形式!
我们可以看到不同类型的方法调用的方式也存在区别,同学们可以根据自身的需求去编写不同的类形式!
今天的课程就讲到这里,有什么问题我们下期继续!