今天我们来学习下如何自定义方法,以及编写python类文件,在公司中我们不可能一个python文件几千几万行代码,不利于代码的维护及排查问题的及时性,而面向对象则是解决了这一问题!

def(方法的定义)

在python中,我们使用def这个关键字进行自定义方法,可以供其他方法,其他类的调用,而不需要再写一次这个方法的内容了。

python一个文件两个类 python 两个文件相互调用_父类

以上我们可以看到一个简单的方法定义,方法后面必须要加'()'。上面这个方法的主要内容就是打印一个字符串,如果我们需要一个方法里面的某个值传给调用他的代码,那么我们可以使用return进行返回:

python一个文件两个类 python 两个文件相互调用_python中两个文件如何互相传参_02

运行以上代码,我们可以看到控制台并未任何输出,因为我们需要对这个方法赋值给某个变量,可以通过打印print看到,方法返回的内容。

接下来我们可以看一个实例:

python一个文件两个类 python 两个文件相互调用_python一个文件两个类_03

上述中的e就是test()方法返回的值,所以e的值就为a+b=3。

刚才所说,方法后面都是需要加括号,那么这个括号里面是否可以传值呢,答案肯定是可以的!

python一个文件两个类 python 两个文件相互调用_父类_04

我们可以看到方法括号里传了值(形参:形式上的参数),那么我们在调用这个方法的时候,括号里面就需要传参数,否则将会报错,缺少参数。

方法括号内还可以传不定长参数,就是不明确具体传的参数个数,根据实际调用情况进行传参:

python一个文件两个类 python 两个文件相互调用_子类_05

我们可以看到不定长参传参的方式*args,是以tuple元组的形式进行传参,还可以使用**args,我们也可以查看到,参数是以dict字典的形式进行的传参!

Class(面向对象)

class就是代表着一个类,什么是类,你可以把它理解为一个家庭,家庭里面包含了方法,不同类型的方法则是不同的家庭成员,但是对外又是一个家庭的,只有一个户口本,类和家庭一样可以继承,爷爷生爸爸,爸爸生了你,分别最后又组成了新的家庭。

python一个文件两个类 python 两个文件相互调用_子类_06

上面我们可以看到,定义了一个类,这个类,里面包含了eat(),drink(),sleep()等方法,对类进行一个实例,然后通过实例去调用这个类里面的方法。

类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样:

python一个文件两个类 python 两个文件相互调用_父类_07

我们可以看到init方法中的name,在前面加了self之后,可以直接被其他方法所调用,那么这个self是什么呢,实际就是类里面的内部的实例,不需要氮素对类进行实例,直接加self之后,就可以传给其他的方法。

类的继承

所谓类的继承就类似于家族中的基因遗传,父类的一些方法及元素,可以供子类使用

python一个文件两个类 python 两个文件相互调用_子类_08

我们可以看到下面的子类继承了上面的父类,不但可以调用自身的方法,同样可以调用父类中的方法。子类还可以继承父类的子类:

python一个文件两个类 python 两个文件相互调用_python一个文件两个类_09

我们可以看到tiger继承了animal,然后ele则又继承了tiger,那么类ele则可以使用上面两个类中的所有方法。

类中的方法也存在集中不同的形态,静态类方法,类方法,属性等形式!

python一个文件两个类 python 两个文件相互调用_python一个文件两个类_10

我们可以看到不同类型的方法调用的方式也存在区别,同学们可以根据自身的需求去编写不同的类形式!

今天的课程就讲到这里,有什么问题我们下期继续!