.面向对象的介绍  (面向对象编程(OOP))

(1)面向对象(Object Oriented)是软件开发方法,一种编程范式.

(2)面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物

     (3)面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式

(4)面向对象的特点:  封装, 继承, 多态

案例: 解决吃啤酒鸭的问题

方式一(面向过程):                                  方式二(面向对象):

1) 养鸭子                                                 1) 找个卖啤酒鸭的商贩

2)鸭子长成                                               2) 掏钱买啤酒鸭

3)杀鸭子                                                   3) 吃啤酒鸭

4)烹饪

5)吃啤酒鸭

二.类和对象

类和对象是面向对象编程中的2个重要概念. 其中对象是面向对象编程的核心, 在使用对象的过程中,为了将具有共同特征和行为的一组对象定义,提出另外一个概念---类.

2.1 类

◆  人以类聚,物以群分

◆  具有相似内部状态和运动规律的实体的集合(或统称为抽象)

◆  具有相同属性和行为事物的统称

◆  类是抽象的, 一个类可以找到多个对象

2.2 对象

◆  某一个具体事物的存在,在现实世界中可以是看得见摸得着的

◆  可以是直接使用的

2.3 练习(区分类和对象)

(1) 汽车     类

奔驰汽车     类

张三开的那辆奔驰汽车     对象

(2) 水果     类

苹果     类

红富士苹果     类

我手上拿着的苹果     对象

2.4 类的构成

类Class是由3部分组成的:

①类的名称: 类名    比如: 人Person

②类的属性:一组数据    比如: 姓名name, 年龄age,身高height等

③类的方法:允许进行的操作的方法    比如: 跑run, 跳skip等

三.定义类

3.1 定义格式:

class 类名:

方法列表

3.2 定义形式

demo: 定义一个Hero类#旧式经典类定义
class Hero:def info(self):print('英雄所见略同')#新式类定义
class Hero(object):def info(self):print('英雄所见略同')

注意:

(1) object是Python里所有类的最顶级父类

(2) 类名按照大驼峰命名法命名

(3) info是一个实例方法,第一个参数一般是self表示实例对象本身;也可以将self换为其他的名字, 其作用是一个变量,这个变量指向了实例对象

四.创建对象

4.1 创建对象的格式为:(实例化对象)

对象名1=类名()

对象名2=类名()

4.2 创建对象Demo

五.添加和获取对象的属性

class Hero(object):'''定义一个英雄类,可以移动和攻击'''def move(self):'''实例方法'''print('正在前往事发地点....')def attack(self):'''实例方法'''print('发出了一招强有力的普通攻击')
# 实例化一个对象
t=Hero()# 给对象添加属性及相应的属性值
t.name='泰达米尔'
t.hp=2600    #生命值
t.atk=450    #攻击力
t.armor=200  #护甲值# 格式化输出
print('英雄: %s的生命值: %d' %(t.name,t.hp))
print('英雄: %s的攻击力: %d' %(t.name,t.atk))
print('英雄: %s的护甲值: %d' %(t.name,t.armor))
# 调用方法
t.move()
t.attack()

六.实例方法通过self获取对象属性

class Hero(object):'''定义一个英雄类,可以移动和攻击'''def move(self):'''实例方法'''print('正在前往事发地点....')def attack(self):'''实例方法'''print('发出了一招强有力的普通攻击')def info(self):print('英雄: %s的生命值: %d' % (self.name, self.hp))print('英雄: %s的攻击力: %d' % (self.name, self.atk))print('英雄: %s的护甲值: %d' % (self.name, self.armor))
# 实例化一个对象
t=Hero()# 给对象添加属性及相应的属性值
t.name='泰达米尔'
t.hp=2600    #生命值
t.atk=450    #攻击力
t.armor=200  #护甲值# 调用方法
t.info()
t.move()
t.attack()

七.魔法方法

7.1 __init__()方法


class Hero(object):'''定义一个英雄类,可以移动和攻击'''def __init__(self):   #self代表实例化对象#赋值   没有参数self.name='泰达米尔'self.hp=2600    #生命值self.atk=450    #攻击力self.armor=200  #护甲值def move(self):'''实例方法'''print('正在前往事发地点....')def attack(self):'''实例方法'''print('发出了一招强有力的普通攻击')def info(self):print('英雄: %s的生命值: %d' % (self.name, self.hp))print('英雄: %s的攻击力: %d' % (self.name, self.atk))print('英雄: %s的护甲值: %d' % (self.name, self.armor))
# 实例化一个对象
t=Hero()# 调用方法
t.info()
t.move()
t.attack()
class Hero(object):'''定义一个英雄类,可以移动和攻击'''def __init__(self,name,hp,attack,armor):#属性初始化  有参数self.name=nameself.hp=hp         #生命值self.atk=attack    #攻击力self.armor=armor   #护甲值def move(self):'''实例方法'''print('正在前往事发地点....')def attack(self):'''实例方法'''print('发出了一招强有力的普通攻击')def info(self):print('英雄: %s的生命值: %d' % (self.name, self.hp))print('英雄: %s的攻击力: %d' % (self.name, self.atk))print('英雄: %s的护甲值: %d' % (self.name, self.armor))
# 实例化一个对象
t=Hero('泰达米尔',2600,450,200)# 调用方法
t.info()
t.move()
t.attack()
注意:
(1)在类的内部获取属性和实例方法,通过self获取
(2)在类的外部获取属性和实例方法,通过对象名获取
(3)如果一个类有多个对象,每个对象的属性是各自保存的,都有各自独立的地址
(4)但是实例方法是所有对象共享的,只占有一份内存空间.类会通过self来判断是哪个对象调用了实例方法

7.2 __str__()方法

str 如果一个类中定义了__str__方法,在打印对象时,默认输出该方法的返回值,没有定义会返回对象的地址

class Hero(object):'''定义一个英雄类,可以移动和攻击'''def __init__(self,name,hp,attack,armor):self.name=nameself.hp=hp         #生命值self.atk=attack    #攻击力self.armor=armor   #护甲值def move(self):'''实例方法'''print('正在前往事发地点....')def attack(self):'''实例方法'''print('发出了一招强有力的普通攻击')def __str__(self):return '英雄<%s>数据: 生命值 %d, 攻击力 %d, 护甲值 %d' % (self.name, self.hp,self.atk,self.armor)# 实例化一个对象
t=Hero('泰达米尔',2600,450,200)
g=Hero('盖伦',4200,260,400)
print(t)
print(g)返回值:
英雄<泰达米尔>数据: 生命值 2600, 攻击力 450, 护甲值 200
英雄<盖伦>数据: 生命值 4200, 攻击力 260, 护甲值 400

7.3 __del__()方法

析构方法,删除无用的内存对象(当程序结束会自动自行析构方法)

class Dog(object):def __init__(self,name):self.name =nameprint("__init__方法被调用")def __del__(self):print("__del__方法被调用")print("python解释器开始回收%s对象了" % self.name)
p = Dog('Bob')
del p返回结果:
__init__方法被调用
__del__方法被调用
python解释器开始回收Bob对象了

八.课堂作业

class Dog:'''定义一个Dog类'''#初始化方法#创建完对象后会自动被调用def __init__(self,name,age,skill):self.name=nameself.age=ageself.skill=skilldef __str__(self):return '%s,年龄%d岁,技能是:"%s"' %(self.name,self.age,self.skill)
if __name__=='__main__':#创建对象a = Dog('大黄狗', 5, '汪汪叫')print(a)b = Dog('大黑狗', 3, '呲牙咧嘴')print(b)c = Dog('大白狗', 1, '夹着尾巴跑')print(c)
大黄狗,年龄5岁,技能是:"汪汪叫"
大黑狗,年龄3岁,技能是:"呲牙咧嘴"
大白狗,年龄1岁,技能是:"夹着尾巴跑"

面向对象(一) 类和对象相关推荐

  1. 面向对象编程——类和对象

    面向对象编程 类和对象 类(Class):用来描述具有相同属性和方法的对象的集合 class Student:name='stu'#属性def say(self):#方法print("hel ...

  2. Java-入门之面向对象以及类和对象的概念(一)

    面向对象,类,对象? 前言:只有光头才能变强! 一:面向对象 当我们初学java时,扑面而来的一个词就是面向对象,那什么是面向的对象呢 ? 在说面向对象之前,大家先要知道对象是什么,如果你脑子里第一想 ...

  3. python【面向对象(类和对象)】

    1.面向对象(类和对象) 1.编程思维 根据面对问题不同人呈现出来的思维模式不同,可以将编程思维分为三种: 1.面向过程编程(穷人思想)-- 会基本的逻辑和语法(遇到问题马上想到的是解决问题的具体逻辑 ...

  4. 谈谈对面向对象、类、对象的了解

    谈谈对面向对象.类.对象的了解 面向对象 强调具备了功能的对象,以类 / 对象为最小单位,考虑让谁来做. 面向对象编程语言中都有类的概念,代码的组织靠类(代码的最小组织单位是类),面向对象编程中执行一 ...

  5. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  6. Day16:面向对象编程——类和对象

    一.面向对象的程序设计 在此之前用到的事面向过程的程序设计,它的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比设计好一条流水线,考虑周全什么时候处理什么东西. 优点:极大的降低 ...

  7. PHP 面向对象:类和对象

    2019独角兽企业重金招聘Python工程师标准>>> 从OOP的视角看,不应区分语言.无论是C++.无论是Java.无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便 ...

  8. python面向对象(part1)--类和对象

    学习笔记 开发工具:Spyder 文章目录 概述 面向过程 面向对象 类和对象 举个例子 语法 定义类 创建对象(实例化) 实例成员 实例变量(对象的变量) 实例方法(对象的方法) 类成员 类变量 类 ...

  9. python中的面向对象:类与对象(重点!!!)

    Python中重点与难点,必须熟练掌握!!! 一.面向对象 1.面向对象概念 面向对象(Object Oriented,OO)是软件开发方法,是一种思想.面向对象的对象是指客观世界存在的事物. 我们之 ...

  10. python多个对象调用类方法、且之间有联系_趣味解读Python面向对象编程 (类和对象)...

    一.面向对象简介 考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介绍.而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁. 用我们的现实思维方式该怎么用程序表达呢? 面向 ...

最新文章

  1. 由右移运算符引发的思考(计算机原理)
  2. php 树形结构实例,如果用php写树形结构?
  3. axios get post下载文件
  4. html滚动选择框代码,如何使用最简单纯Css代码美化checkbox复选框、radios单选框和滑动按钮...
  5. Kettle调度和监控
  6. setTimeout还是setInterval?
  7. unity3d 脚本学习系列
  8. 企业项目运行管理体系的实现
  9. 用贪心算法求解最小生成树
  10. 使用决策树算法对Iris数据构建决策树
  11. 心中无码便是高清,用“脑补”除马赛克!
  12. win10更新完提示未安装任何音频输出设备2019-11-13解决
  13. 无论是否跳槽——都要时刻关注自身能力提升
  14. 计算机视觉 — Harris角点检测
  15. 史上最长的介绍BI(商业智能)的干货
  16. 基于java的cad_基于JavaCAD架构的IP知识产权保护
  17. SQL Server中的日期时间类型
  18. 最新大数据产业生态地图:十大爆发点,百大公司起底
  19. Code Wars游戏说明
  20. iOS placeholder换行

热门文章

  1. python实现马赛克拼图
  2. 【设计干货】那些优秀设计师在界面中必用的一些构图方法
  3. 二级mysql通过率高_计算机二级各科通过率是多少 好过吗
  4. 最近互联网大厂都在裁员?对普通程序员有什么启示?
  5. H.266/VVC帧间预测技术学习:CU级双向加权预测(Bi-prediction with CU-level weight)
  6. python获取excel特定区域_python获取excel指定区域数据库-女性时尚流行美容健康娱乐mv-ida网...
  7. 2021年中式烹调师(中级)考试及中式烹调师(中级)试题及解析
  8. 2022出海东南亚:泰国电商市场现状及网红营销特点
  9. 大数据(9f)Flink窗口函数练习:计算PV和UV
  10. 超微(Supermicro)-WRX80芯片组主板 M12SWA-TF装机记录