Python零基础入门04Pytho

文章来源:一氧化碳中毒   发布时间:2021-9-20 17:47:57   点击数:
  Python零基础入门-04-Python高级语法

这一节课的主要内容是:

1,类。

2,面向对象。

tips:零基础请配套视频学习。

经过前面基础语法的学习,你已经掌握了最基础的python语法,你已经可以使用python做一些简单的小练习题了。

但是针对更高级的编程语言来说,还有一个非常重要的知识点大家还没有学习,那就是——面向对象。

01类

面向对象其实是一种编程思想,并不是具体的语法。然而面向对象所谓的对象,其实就是这里将要讲的——类。

01.1类的定义

类,其实就是对现实世界中存在的物体抽象模拟而已。

现实世界中存在许多东西,飞机,汽车,人,动物等等。我们可以将具体事物抽象为含有指定属性与方法的类。

值得注意:现实世界中的物件经过抽象之后,基本上就可以归结为两方面的内容:

属性。属性讲述了当前物体的一些特征,比如:狗狗的特征有姓名,年龄,性别等等。

方法。方法讲述了当前物体可以做什么事情,比如:狗狗可以做的事情就是睡觉,坐下,狗吠等等。

当然,一个物件的属性与方法多的很,我们选取属性与方法的时候都是选取对我们来说有用的就好了。

案例一:模拟出狗狗的类别。

这个案例的目的是:使用python模拟出一个狗狗类。

#1,定义类的关键字是class,Dog()是给这个类起的名字。classDog():#2,__init__(self)方法是每个类必须要有的方法,他是给Dog初始化数据的。def__init__(self,name,age,sex):#3,这里是对Dog的一些属性初始化。self.name=nameself.age=ageself.sex=sex#4,接下来的一些方法是Dog类可以执行的哪些操作。defsleep(self):print(self.name,"issleeping")defsit(self):print(self.name,"issitting")

解释:

1,定义一个Dog类,首先知道使用class作为关键词来定义,于是classDog()就可以定义出一个Dog类。具体语法框架如下

2,每一个类都必须有__init__(self,a,b,c):方法,这个方法是初始化方法,当使用这个类的时候__init__方法不用调用自动执行。其中a,b,c是传递的数据(没有数据传递的时候可以没有),self代表着当前类本身(self必须存在)。

3,类似于self.name=name的一些操作就是将传递过来的数据name给当前Dog类的self.name属性进行赋值而已。

4,除了__init__方法是类必须含有的初始化方法外,其他方法都是自己定义的一些方法,自定义的方法指示着当前类Dog可以执行哪些操作,当前Dog类定义了sleep,sit两个操作。

总结:通过上述代码我们就定义出了一个狗狗类,这个狗狗类拥有三个属性name,age,sex,两个方法sleep,`sit。

接下来就讲讲类怎么使用。

01.2类的使用

在上文中我们定义出了一个Dog类,这里就来讲讲类怎么使用。

上文中我们定义出了一个Dog类,同时我们说了这个Dog类是对所有狗狗的抽象类。既然他是所有狗狗的抽象类,那么我么就可以使用这个抽象类来得到许许多多的具体的狗狗。

案例二:使用抽象Dog类得到具体的狗狗。

classDog():def__init__(self,name,age,sex):self.name=nameself.age=ageself.sex=sexdefsleep(self):print(self.name,"issleeping")defsit(self):print(self.name,"issitting")#1,得到第一支狗狗dog_1。dog_1=Dog("小花",6,"母")#2,得到第二支狗狗dog_2。dog_2=Dog("小红",4,"母")#3,得到第三支狗狗dog_3。dog_3=Dog("憨狗",7,"公")

解释:

通过dog_1=Dog("小花",6,"母")语句便可以获得一只真实的狗狗,上文中定义出的Dog()类需要传入三个属性值name,age,sex,于是我们就在括号中传入三个数据,然后得到一只狗狗存放在变量名dog_1中。同时可以知道变量名dog_1指向的狗狗名字叫做小花,6岁,是只小母狗。

dog_2,dog_3的定义类似。

01-3类的使用分析

这里分析一下类的具体运作流程。

案例三:类的使用。

classDog():def__init__(self,name,age,sex):self.name=nameself.age=ageself.sex=sexdefsleep(self):print(self.name,"issleeping")defsit(self):print(self.name,"issitting")#1,得到一只狗狗,存放在变量dog_3中。dog_3=Dog("憨狗",7,"公")#2,输出一下dog_3的name属性。print(dog_3.name)#3,调用一下dog_3的sit()方法。dog_3.sit()

运行结果:

分析:

首先,定义了一个抽象的Dog类

然后,使用dog_3=Dog("憨狗",7,"公")得到一只真实的狗狗。

当我们传入数据"憨狗",7,"公"的时候,init方法会被自动调用,然后给数据赋值。

最后得到这个狗狗的name是憨狗,7岁,是一只公狗,并且将这只真实的狗狗存放在dog_3变量中。

dog_3拥有三个属性以及两个方法,于是直接用dog_3.name就可以得到属性中的name属性,也就会得到dog_3的名字,然后输出。(属性直接用变量名.属性就可以了)

dog_3.sit()就可以调用方法sit()了,于是会执行sit()方法的内容。(方法需要使用变量名.方法())。

02面向对象

好了好了,上边类的使用过程其实就是面向对象的编程思想。在这里再做一下总结吧。

当我们定义具体事物的抽象类之后,这个类就可以看作是一个模板。

就好像我们买橡皮泥的时候,会赠送一些模具,有小车、小狗、小猫,小花那样的形状的模具。

这里的类就相当于是一个模具。

然后我们使用类这个模板,来得到一个个的具体事物。(实用类得到的具体事物又称之为”实例“)

就好像使用橡皮泥中的小花这个模具,得到一个个的小花。

于是,我们可以发现:世界中的所有事物都可以抽象为一个一个的类。

刚才我们一直提“事物”这个词,但是在计算机中,现实世界中的事物又被称之为“对象“。

对象是指现实事物,类是对象(现实事物)的抽象。

我们将现实世界中的对象—抽象为类—然后在使用类得到一个个具体的实例的过程们就称之为面向对象。

03类的继承与重写

类也有一些专业的名词与操作,可以提高编码效率,这里简要介绍一下常用的。

继承:继承其实就好像儿子从父亲哪里得到已有的内容,然后儿子可以用。

重写:重写就是儿子从父亲那里得到一些内容之后,但是这些内容不太适合儿子,儿子就把父亲的东西修改一下,变成自己所特有的内容。

03.1继承

继承:一个类(子类)从另一个类(父类)哪里得到一些东西。

注意:子类与父类要有因果关系才可以哦。(也就是不能瞎继承)

案例四:继承演示。

先定义一个动物父类(动物都可以吃东西,叫),然后再定义一个小猫子类(小猫可以逮老鼠)。

子类小猫属于动物父类,所以可以继承动物父类。

classAnimal():def__init__(self,name,age):self.name=nameself.age=agedefeat(self):print(self.name,"动物可以吃东西")defcall(self):print(self.name,"动物可以叫")classCat(Animal):def__init__(self,name,age,sex):super().__init__(name,age)self.sex=sexdefCatcheMouse(self):print(self.name,"猫可以捉老鼠")cat=Cat("小花猫",4,"公")cat.call()cat.CatcheMouse()

结果:

解释:

首先定义父类。

然后定义子类,并且子类继承父类。

super().__init__(self,name,age):super()就是父类,然后他调用父类的init方法,并且传入两个数据。

然后使用Cat类得到实例:cat=Cat("小花猫",4,"公")。

最后调用:发现使用子类定义出来的实例也可以调用父类,这正是继承起到的作用。

总结:上述分析可知,Cat子类继承了Animal父类之后,使用Cat定义出来的实例cat含有自己方法CatcheMouse之外还拥有父类Animal所具有的两个方法eat和call。这就是继承。

03.2重写

重写就是在继承的基础之上,子类得到了父类的一些东西,但是这些东西子类用着不太合适,所以子类要把这些东西修改为自己适合的。

于是子类在自己的类中,重新定义父类的一些东西,重新实现一下。

案例五:重写案例。

父类是Animal,子类是Owl(猫头鹰)。

父类中有一个方法sleep说的是动物都是晚上睡觉。

但是子类是猫头鹰的时候,这个子类是白天睡觉,所以父类的sleep方法不适合这个子类,于是在这个子类中重写一下sleep方法就好了。

classAnimal():def__init__(self,name,age):self.name=nameself.age=agedefeat(self):print(self.name,"动物可以吃东西")defsleep(self):print(self.name,"动物晚上睡觉")classOwl(Animal):def__init__(self,name,age,sex):super().__init__(name,age)self.sex=sexdefsleep(self):print(self.name,"猫头鹰白天睡觉")cat=Owl("小猫头鹰",4,"公")cat.eat()cat.sleep()

结果:

解释:

总结:子类继承父类之后,父类的方法不一定完全合适,这时候子类就可以重新实现一下父类的不合适的方法即可。这就是重写。

小小猿笔记

测试一下功能而已。

转载请注明:http://www.lwblm.com/bzbk/12448.html
  • 上一篇文章:
  • 下一篇文章: 没有了