前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(十一)python3 只需3小时带你轻松入门——面向对象

(十一)python3 只需3小时带你轻松入门——面向对象

作者头像
1_bit
发布2020-10-23 14:32:33
3800
发布2020-10-23 14:32:33
举报
文章被收录于专栏:我的知识小屋我的知识小屋

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

例如: 人是一种类型,拥有年龄、身高、体重、性别等属性。具体一个人是一个对象,例如小明;小明有年龄、身高、体重、性别等属性。小红也是人,所以具有相同属性。

类变量 类变量在整个实例化的对象中是公用的。或者可以理解为属性。 创建一个人的类,类里面有类变量,使用类变量记录人的年龄、性别、身高等属性。

类的定义:

代码语言:javascript
复制
class HumanClass:
    age=1
    sex='未知'
    stature=60
    weight=3

以上类我定义了一个年龄为1,年龄为未知,身高为60,体重为3的类。 类的定义使用class开头,后面接类名,然后冒号结束;类里面的属性定义需要使用缩进,表示代码块。

类方法 类中定义的函数。 例如狗有个方法就是发声,汪汪叫;定一个方法用来输出汪汪,模拟狗的叫声。

代码语言:javascript
复制
class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)

以上代码定义了一个动物类,名为AnimalClass,其中有类变量(或说属性),age代表年龄、sex代表性别、sound代表发出的声音、ismammal代表是否是哺乳动物,0代表不是,1代表是;定义了一个函数,类里面的函数跟外面的自定义函数定义类似,这个函数输出sound变量。

函数里面默认传入一个self,默认代表类本身,如果调用sound不使用self,那么这个类方法将会不识别,不认识sound变量,传入self后,使用self运用点“.”运算符可以获取到当前类的sound变量。 我们新建一个对象:

代码语言:javascript
复制
class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)
        
dog = AnimalClass()
dog.say()

这个时候dog为AnimaClass的对象,拥有这个类里面的所有属性和方法。我们使用dog调用say(),也就是dog这个对象使用say方法,在AnimalClass类中,say函数是输出叫声的文字,那么结果将会显示出叫声“呜呜叫”。 查看结果:

在这里插入图片描述
在这里插入图片描述

我们可以直接使用dog这个对象使用点“.”运算符获取它自身的属性sound,配合print()函数作为输出,也一样可以达到效果:

代码语言:javascript
复制
class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)
        
dog = AnimalClass()
dog.say()
print(dog.sound)

结果如下:

在这里插入图片描述
在这里插入图片描述

继承 即一个派生类继承基类的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

派生类:例如我们创建一个类是动物,动物的基本属性有毛发、眼睛、呼吸器官等。我们创建一个鸟的类别,继承了动物类,那么鸟这个类别是动物;在这里鸟就是派生类,动物就是基类。

代码语言:javascript
复制
class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)
        
class BirdClass(AnimalClass):
    sound='唧唧叫'
maque=BirdClass()
maque.say()

以上代码我们新建了一个BirdClass鸟的对象,在BirdClass类后面使用一个圆括号,圆括号里面的是基类,这个类继承AnimalClass这个类,拥有这个对象的属性和方法。所以在BirdClass中没有看到其它方法和变量,只有一个sound把呜呜叫改成了唧唧叫,毕竟是鸟,一般都是唧唧叫吧。 在这里重新给sound赋值叫做重写,我们重写了其中一个属性。不仅类变量可以重写,方法也可以重写。

类方法重写 如果从父类继承的方法不能满足子类的需求,可以 对其进行改写,这个过程叫方法的覆盖,也称为方 法的重写。 在这里我们并没有重写say方法,但是BirdClass还是继承了基类的方法。我们新建了一个BirdClass的对象maque(麻雀),使用maque调用say方法,结果如下:

在这里插入图片描述
在这里插入图片描述

结果是“唧唧叫”,因为我们在BirdClass类中重写了叫声sound变量。 接下来我们尝试一下方法重写。

代码语言:javascript
复制
class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)
        
class BirdClass(AnimalClass):
    sound='唧唧叫'
    def say(self):
        print('我是鸟类,我会',self.sound)
maque=BirdClass()
maque.say()

以上代码在BirdClass类中重写了say方法,在print中添加了’我是鸟类,我会’,字符串。 查看运行结果

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档