一、面向过程和面向对象

1、面向过程

以我为中心,做一件事先干什么,在干什么,后干什么,有一套清楚完整的流程。核心是“过程”。

优点:将要解决的问题流程化, 编写相对简单

缺点:可扩展性差

2、面向对象

以对象为中心,做一件事不需要你清楚怎么做,你创建能做这件事的对象即可。对象是具体的事物,它能实现一定的功能。

优点:可扩展性强

缺点:编程的复杂度高于面向过程

二、面向对象如何编写

在现实世界中,是先有对象,然后后归类;在代码中,是先定义类,然后再创建对象

#定义类 格式:

class 类名:

  def  __init__(self,参数):     #这是类的构造方法,在创建对象的时候会自动执行;self指当前正在创建的对象,由python自动传值

    pass

  def  方法名(self,参数):     #类中自定义的方法

    pass

#创建对象:

变量 = 类名(参数)

# 访问对象的属性信息
对象.属性
# 方法的访问:
对象.方法()

 #定义computer类
class Computer:
def __init__(self,pinpai,cpu):
self.pinpai = pinpai
self.cpu = cpu def playgame(self,game):
print("使用%s电脑打%s游戏" % (self.pinpai, game))
#创建具体对象c
c = Computer("lenovo", "A8")
print(c.pinpai)
c.playgame("lol") #创建对象c2
c2 = Computer("xiaomi", "i7")
print(c2.pinpai)
c2.playgame("吃鸡")

!!!注意:

  对类与对象关系的理解: 类通过实例化创建一个对象,每个对象都是独立的。

  点 . 可以理解为“的”,或者“调用”  比如 c.pinpai 就是对象c的品牌;c.playgame()   对象c调用playgame方法

三、面向对象和面向过程大PK

那么面向对象和面向过程到底哪个好?

具体问题,具体分析。 没有绝对的好和不好。 这点 要格外注意。

对于大型项目,更适合用面向对象;对于小型脚本,更适合用面向过程

四、面向对象三大特征

(一)封装

封装是一个很宽泛的概念,你写一个函数,可以称为封装,对象,打包成模块也都属于封装的思想。

在面向对象思想中,把一些看似无关紧要的内容组合到一起统一进行存储和使用,这就是封装。

对属性封装

  self.xxx = xxxx
对方法封装

  def 方法名():

    pass

(二)继承

继承格式

class 子类名(父类1,父类2):

  pass

子类可以自动拥有父类中除了私有内容外的其他所有内容

(三)多态

同一个对象多种形态

 class Animal:
def chi(self):
print("动物就知道吃")
class Pig(Animal):
def chi(self):
print("猪在吃")
class Haski(Animal):
def chi(self):
print("哈士奇在吃")
class Alasika(Animal):
def chi(self):
print("阿拉斯加在吃") class SiYangYuan:
def yanng_animal(self, ani): #本来这里的参数要的是Animal类的对象,但是传入Pig类,Haski类,Alasika类的对象也可以,这就是多态
ani.chi() zhu = Pig()
erha = Haski()
ala = Alasika()
alex = SiYangYuan()
alex.yanng_animal(zhu)
alex.yanng_animal(erha)
alex.yanng_animal(ala)

多态的好处:

程序具有超高的可扩展性。

面向对象思想的核心与灵魂。

python自带多态,我们一直在用多态,但是感觉并不明显。 比如. 我们创建一个变量a = 10 , 我们知道此时a是整数类型。但是我们可以通过程序让a = "alex", 这时, a又变成了字符串类型。

python记录_day15 面向对象初识的更多相关文章

  1. python递归 及 面向对象初识及编程思想

    递归 及 面向对象初识及编程思想   一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递 ...

  2. Python 基础之面向对象初识与类的封装

    一.面向对象类的初识 1.类的定义 #三种方式:#1.class MyClass:    pass #2.推荐class MyClass():    pass #3.class MyClass(obj ...

  3. python进阶之面向对象初识

    面向对象 不同于面向过程的编程思想,面向对象是一种将程序抽象为一个个对象的编程思想,能更好的处理现实世界到的一些复杂问题. 通过下面的例子来初步了解面向对象的编程方式. class Person: # ...

  4. python基础学习笔记——面向对象初识

    面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...

  5. Python中面向对象初识到进阶

    面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...

  6. Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象

    Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...

  7. python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象

    https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象 ...

  8. python之面向对象初识

    一.面向对象初识 1.结构上 面向对象分成两部分:属性.方法 class A: name = 'xiaoming' # 静态属性.静态变量.静态字段. def func1(self): # 函数.动态 ...

  9. python基础(17)继承类和面向对象初识

    1.继承类 class Lm: money = 1000000 house = 5 def driver(self): print('会开车') class Mcb(Lm): def about_me ...

随机推荐

  1. (转)开源项目miaosha(上)

    石墨文档:https://shimo.im/docs/iTDoZs4CVfICgSfV/ (二期)19.开源秒杀项目miaosha解读(上) [课程19]几张图.xmind0.6MB [课程19]开源 ...

  2. js二叉树

    插入数值//初始化node对象function Node ( data) { this.data = data; this.left = null; this.right = null;}// 定义插 ...

  3. Asp.net 之 window 操作命令

    命令:cmd  打开执行窗口 命令:inetmgr.打开iis管理器 命令:dcomcnfg 打开组件服务 命令:regedit   打开注册表

  4. WSL及Linux入门

    win10内置linux子系统(Windows Subsystem for Linux),可以不用安装Vmware等虚拟机学习linux啦. wsl开启方式 设置打开开发人员模式. 控制面板-程序和功 ...

  5. 题解——洛谷P2781 传教(线段树)

    可以说是数据结构学傻了的典型案例了 昨天跳到这题上 然后思考了一下 噫!好!线段树裸题 然后打完板子,发现\(  n \le 10^9 \) 显然线段树直接做不太行 然后这题又只有普及的难度 然后我就 ...

  6. SpringBatch是什么?

    https://segmentfault.com/a/1190000016278038 <dependency> <groupId>org.springframework.bo ...

  7. Visual studio 离线安装

    VS2017在下载好安装程序安装的时候,会根据你选择的功能模块来下载所需要的安装程序,而这些安装程序的下载位置并不会让你选择,而是直接放在 C:\ProgramData\Microsoft\Visua ...

  8. .Net Core项目在Docker上运行,内存占用过多导致pods重启的问题

    默认情况下,.NET Core应用的内存回收模式是Server模式,这种情况下,内存占用和服务器核心数量有关,一半占用量比较大. 我们的应用目前吞吐量都不大,可以采用Workstation模式,这种模 ...

  9. 17秋 SDN课程 第四次上机作业

    1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...

  10. python学习打卡 day12 生成器

    本节主要内容 : 生成器 生成器函数 各种推导式 生成器表达式 一.生成器 什么是生成器.生成器的本质就是迭代器. 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实 ...