前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python入门教程NO.9 怎么理解面向对象编程?看我就够了!

python入门教程NO.9 怎么理解面向对象编程?看我就够了!

作者头像
python鱼霸霸
发布2020-04-23 13:54:06
3830
发布2020-04-23 13:54:06
举报

面向对象编程简称:OOP,是object oriented programming的缩写,它是一种python的编程思想。

  • 面向过程----就是我们一开始学习的,按照解决问题的步骤去写代码,这就是面向过程
  • 面向对象----程序设计的核心是对象,常用于解决一类问题,是一条精心设计的生产线
到底什么是面向对象?
  • 相信很多人看了上面的对于面向对象编程的解释,脑海中并没有产生形象的记忆,看了无数关于面向对象编程的解释,全是干巴巴的名词,完全搞不懂啊,感觉要奔溃了!
  • 这时,你看到了这篇文章,那么看我怎么给你解释什么叫面向对象的编程,接着往下看,看完还不懂你顺着网线来打我~

首先咱们来说一下面向对象的几个术语:

  • :对具有相同数据或者方法的一组对象的集合
  • 类属性:属于一个类中所有对象的属性,
  • 类方法:那些无须特定的对象实例就能够工作的从属于类的函数。
  • 对象:对象是一个类的具体实例
  • 实例化:创建对象动作叫做实例化
  • 继承:子项继承父项的某些功能,在程序中表现某种联系
  • 方法重写::如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 封装:把需要用的函数或者功能封装,方便其他程序直接调用
  • 标识:每个对象的事例都需要一个可以唯一标识这个事例的标记
  • 实例属性:对象的属性叫做实例属性
  • 实例方法:对象调用的方法叫做实例方法

相信很多人看过一个美国大片---《复仇者联盟》,复仇者联盟是由:钢铁侠、美国队长、雷神、绿巨人、黑寡妇、鹰眼、洛基、尼克等超级英雄组成的一个护卫地球的超级联盟。

那么让我们用复仇者联盟来理解一下面向对象编程的术语:
  • :钢铁侠、美国队长、雷神、绿巨人、黑寡妇、鹰眼...等等组成了复仇者联盟,复仇者联盟就成为了一个超级英雄的集合,他们都拥有超能力。
代码语言:javascript
复制
class Fulian:    #用class定义了一个名为‘Fulian’的类,记得加上英文:
  • 类属性:复仇者联盟的成员都是人型,拥有一个脑袋、两只手、两只眼睛、一张嘴,这些共同的属性就构成了类的属性
代码语言:javascript
复制
class Fulian:
    def __init__(self, name, hair_color):       #类的构造方法函数,用于初始化类的内部状态,为类的属性设置默认值
        self.name = name           #定义 name 属性(名字)
        self.hair_color = hair_color            #定义 hair_color 属性(头发颜色)
  • 类方法:复仇者联盟有一艘飞船,这个飞船无需复仇者联盟的任何人操作,它可以自动飞行,它属于复仇者联盟下面的一个武器,是一种功能
代码语言:javascript
复制
class Fulian:
    def __init__(self, name, hair_color):       #类的构造函数,用于初始化类的内部状态,为类的属性设置默认值
        self.name = name           #定义 name 属性(名字)
        self.hair_color = hair_color            #定义 hair_color 属性(头发颜色)
    def airship(self):           #定义一个函数,为类的函数,称为方法;它至少有一个参数 self(飞船)
        print('{}正在驾驶飞船'.format(self.name))
  • 实例化:比如我们描述一个拥有绿色皮肤力大无穷会变大容易愤怒等等特点的超级英雄,我们把这些特征结合在一起,很明显就让大家知道这是说的绿巨人,这就是绿巨人这个对象实例化的过程
代码语言:javascript
复制
fulian = Fulian('美国队长', '金色头发')         #传入 name 和 hair_color 参数,实例化对象
  • 对象美国队长作为复仇者联盟一员,他是复仇者联盟的一个具体事例,他是一个独一无二的超级英雄,并且归属于复仇者联盟
代码语言:javascript
复制
class Fulian: 
    def __init__(self, name, hair_color):       #类的构造函数,用于初始化类的内部状态,为类的属性设置默认值
        self.name = name           #定义 name 属性(名字)
        self.hair_color = hair_color            #定义 hair_color 属性(头发颜色)
    def airship(self):           #定义一个函数,为类的函数,称为方法;它至少有一个参数 self(飞船)
        print('{}有着{},他正在驾驶飞船'.format(self.name, self.hair_color))      #调用类的属性

fulian = Fulian('美国队长', '金色头发')         #传入 name 和 hair_color 参数,实例化对象
fulian.airship()               #实例对象 fulian 调用类的方法 airship
#输出:美国队长有着金色头发,他正在驾驶飞船
  • 继承:继承很好理解,假如绿巨人生了个儿子叫小浩,跟浩克一样会变大、变绿、力大无穷,那么无疑,是浩克的亲儿子,因为小浩继承了浩克的能力
代码语言:javascript
复制
class Hulk:          #定义一个绿巨人类,用变量赋值的方式给类加上属性
    skin = 'green'         #皮肤属性
    body = 'tall'        #身高属性

class Son(Hulk):          #定义绿巨人的儿子类,括号里填上父类名,继承父类的属性和方法
    pass

son = Son()
print(son.skin)          #输出:green
  • 方法重写:绿巨人的儿子小浩说不喜欢身上的绿色,于是他改变了基因,去掉了绿色
代码语言:javascript
复制
class Hulk:          #定义一个绿巨人类,用变量赋值的方式给类加上属性
    skin = 'green'         #皮肤属性
    body = 'tall'        #身高属性

class Son(Hulk):          #定义绿巨人的儿子类,括号里填上父类名,继承父类的属性和方法
    skin = 'white'            #改变基因,变回白色皮肤

son = Son()              #类的实例化
print(son.skin)          #输出:white
  • 封装:比如,我们把复仇者联盟的使用的武器存放到一个武器库里面,需要的时候直接从武器库调用武器,这就是一个封装的过程
代码语言:javascript
复制
class Arms:
    def __init__(self, name, sort, func):        
        self._name = name                        #通过在变量前加一个下划线来封装属性, 例如:self._name=name
        self._sort = sort
        self._func = func
    def fun(self):
        print('{}属于{}武器,它可以{}' .format(self._name, self._sort, self._func))

arms = Arms('雷神之锤' , '锤类' ,'发出闪电')
arms.fun()
#输出:雷神之锤属于锤类武器,它可发出闪电
  • 标识:每个超级英雄都有自己独特的超能力或者武器,比如美队的盾牌就标识了他的身份
  • 实例属性:妇联的各位都是独一无二的,比如绿巨人的绿,雷神的闪电等等,都是他们的属性之一
  • 实例方法:雷神可以使用锤法,美队可以使用盾法、绿巨人扔车,他们每个人使用的方法都是实例方法

在python中,用变量表示属性,用函数表示方法,因此具有相同属性和方法的一类事物就是‘类’,对象就是这这类事物中具体的一个。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 到底什么是面向对象?
    • 那么让我们用复仇者联盟来理解一下面向对象编程的术语:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档