Python进阶(十三)----面向对象

一丶面向过程编程vs函数式编程vs面向对象编程

面向过程:

​ 简而言之,step by step 一步一步完成功能,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了.

###   来自百度百科
面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想。可以说面向过程是一种基础的方法。它考虑的是实际地实现。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。对比面向过程,面向对象的方法主要是把事物给对象化,对象包括属性与行为。当程序规模不是很大时,面向过程的方法还会体现出一种优势。因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。比如拿学生早上起来这件事说明面向过程,粗略的可以将过程拟为:
(1)起床
(2)穿衣
(3)洗脸刷牙
(4)去学校
而这4步就是一步一步地完成,它的顺序很重要,你只需要一个一个地实现就行了。 # C语言就是面向过程,虽然缺点很多,但是面向过程是编程的一种重要思想.C语言也算是其他更高级语言的'鼻祖'

函数式编程:

###   来自百度百科
函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值) # 简易理解: 函数式编程也是面向过程,函数式编程是极其简化的封装一个功能或一个动作, 由函数名+()去调用执行.减少代码的重复,对要完成的功能思路清晰. 优点:
代码简洁,开发快速
接近自然语言,易于理解
更方便的代码管理
易于"并发编程"
代码的热升级 缺点:
严重占用计算机资源 # 常见的函数式语言: scale python

面向对象:

###  来自百度百科
面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。 #简易理解:
1. 面向对象三大特性:封装(对相似功能的集合操作),继承(提高代码的重复利用),多态(复杂~~)
2. 万物皆'对象'
3. 类:一个共享相同结构和行为的对象的集合 #优缺点:
优点:易维护、易复用、易扩展,可使系统更加灵活、更加易于维护
   缺点:性能比面向过程低,

二丶面向对象的结构

# class 关键字 , 类名(采用驼峰命名,首字母大写)
class Student: # 类是相似功能的集合体. daily = '学习' # 静态属性,属性
examination = '考试' # 静态属性,属性 def work(self): # 方法 ,self是位置参数
print('每天要上课') def homework(self):
print('家庭作业') s1=Student() # s1就是对象,类的具体体现.

三丶从类名的角度使用类

class Student:

    '''
备注信息
''' daily='学习' # 变量( 之前 ) 静态属性,属性
exam='考试' def work(self): # 函数(之前) 方法,动态方法
print('上课了')
def homework(self):
print('做作业了') ### 类名角度 : 调用 类中的属性
# 1.查看类中所有的内容 , 类名.__dict__ 只用于获取类中的全部
print(Student.__dict__)
# 2. 查看类中单个内容, 类名.属性名
print(Student.daily) # 查看静态属性
Student.cloth='校服' # 增加静态属性
Student.exam='大手大脚三' # 修改静态属性
del Student.exam # 删除静态属性
print(Student.__dict__) ### 类名调用类中的方法
Student.homework('moja') #这里必须传参数, 因为homework方法中有self位置参数存在 # 一般类中的属性都是通过类名.的方式去操作

四丶实例化一个对象

# -*-coding:utf-8-*-
# Author:Ds class Student:
'''
备注信息
''' daily = '学习' # 变量( 之前 ) 静态属性,属性
exam = '考试' def __init__(self,name,age,sex): # 就是构造方法, 用于接收参数, 给对象设置对象空间的属性
self.name=name
self.age=age
self.sex=sex def work(self,color): # 函数(之前) 方法,动态方法
self.color=color
print(f'{self.name} 上课了') def homework(self):
print('做作业了') stObj1=Student() # 类名() 过程就叫实例化过程,实例化一个对象
stObj2=Student() # 类名() 过程就叫实例化过程,实例化一个对象
print(stObj1) # 对象,实例 <__main__.Student object at 0x000001E6DF2E9DD8>
print(stObj2) # 对象,实例 <__main__.Student object at 0x000001E6DF2E9DD8> #### 实例化一个对象时,发生了三件事情
# 1. 在类名+()执行时,会在内存中创建一个以对象命名名称空间
# 2. 自动执行__init__方法 ,并且将对象空间传给self
# 3. 执行__init__方法的代码,给对象封装其属性 ### 从对象角度研究类:
# 对象操作对象里面的属性
obj=Student()
print(obj) # 对象的内存地址, 对象会在内存创建一个以obj为名的内存空间
#对象查看全部属性
print(obj.__dict__) #对象可以操作对象空间的属性
obj.age='12' # 增, 在以obj为名的内存空间中,添加一个age属性
obj.name='bl' # 增, 在以obj为名的内存空间中,添加一个name属性
print(obj.__dict__)
del obj.name # 删除, 删除是obj名称空间内的name属性
obj.age='2321' # 改 , 修改的是obj名称空间内的age属性
print(obj.__dict__) # 查看 , obj名称空间的全部属性,以字典的形式 ### 对象 查看类中的属性
mc=Student()
print(mc.exam) # 对象, 查看/获取类中的静态属性,不能修改和删除 ### 对象调用类中的方法
mc=Student('小黑',33,'弟弟')
mc.work('绿色') # work方法 , 是对象具有某一功能的具体方法. 简称:对象方法
print(mc.__dict__)

对象生成时,经历的三件事情

五丶什么是self?

​ self 就是类中方法的第一个位置参数 ,

​ 如果通过对象执行此方法,解释器就会自动的将此对象空间当做实参传给self

Python进阶(十三)----面向对象的更多相关文章

  1. python进阶01 面向对象、类、实例、属性封装、实例方法

    python进阶01 面向对象.类.实例.属性封装.实例方法 一.面向对象 1.什么是对象 #一切皆对象,可以简单地将“对象”理解为“某个东西” #“对象”之所以称之为对象,是因为它具有属于它自己的“ ...

  2. Python进阶之面向对象编程

    面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...

  3. Python进阶之面向对象编程(二)

    Python面向对象编程(二) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...

  4. Python进阶之面向对象编程概述

    Python面向对象编程(一) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...

  5. Python 进阶_OOP 面向对象编程_组合与继承

    #目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数 ...

  6. Python进阶-XIV 面向对象初步

    1.面向对象的引入 def Person(*args): ''' 定义一个人 :param args: 人的属性 :return: 人的所有属性的字典 ''' info = {} info['name ...

  7. Python进阶之面向对象

    新式类与旧式类 区别: 在2.2版本之前所有的类都是旧式类,3.x版本已取消旧式类 旧式类一般的写法,不继承任何父类 class Person: def __init__(self, name): s ...

  8. Python进阶编程 面向对象

    一.面向对象 1.1面向对象的基本格式 class 类名: def 方法名(self): print(123) return 123 def 方法名(self): print(123) return ...

  9. Python 进阶_OOP 面向对象编程_self 的实例绑定

    目录 目录 self 和绑定 调用非绑定的方法 self 和绑定 在 Python 中 self 变量是特殊的, 其用于在实例方法中引用该方法所绑定的实例, 换句话说就是 Python 在实例化对象时 ...

随机推荐

  1. Python导入 from lxml import etree 导入不了

    问题在学爬虫,Python 版本是2.7,安装的lxml包是4.3的,在 from lxml import etree 时发现一直报错,网上查询,原来是Python版本和lxml包版本不一致导致的. ...

  2. 请问在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句?

    using dotNET.Core; using Microsoft.Extensions.Logging; using System; using System.Collections.Generi ...

  3. django入门8之xadmin引入富文本和excel插件

    django入门8之xadmin引入富文本和excel插件 Xadmin引入富文本 插件的文档 https://xadmin.readthedocs.io/en/docs-chinese/make_p ...

  4. VS2017 winform 打包 安装(使用 Microsoft Visual Studio 2017 Installer Project)

    Microsoft Visual Studio 2017 Installer Projects SkyRiN发表于Coding+订阅 253 助力数字生态,云产品优惠大促 腾讯云促销,1核1G 99元 ...

  5. Consider defining a bean of type 'com.*.*.mapper.*.*Mapper' in your configuration.

    @Mapper 不能加载的问题 Consider defining a bean of type 'com.*.*.mapper.*.*Mapper' in your configuration. 添 ...

  6. beetl模版for循环渲染字符串

    beetl for循环渲染html字符串的方式, beetl if条件判断输出, beet自定义标签和标签引用, beetl html赋值, beetl渲染json,beetl注释.变量定义, 更多文 ...

  7. 工控随笔_C#连接PLC_之_C#入门_03_基本数据类型

    using System; using System.Collections.Generic; using System.Linq; using System.Text; //namespace 关键 ...

  8. 【NPDP笔记】第一章 新产品开发战略

    1.1 战略很重要 1.2 战略定义 使命/愿景/核心价值观:成为领导者 公司/经营战略:市场份额扩大10% 创新战略:强调技术,外部合作 职能战略:IT战略,人力资源战略 1.3明确组织方向 组织身 ...

  9. linux减少服务器带宽的方法

    linux减少服务器带宽的方法用百度静态资源公共库http://cdn.code.baidu.com/ 不仅可以不使用服务器流量 而且还有cdn加速比方说http://apps.bdimg.com/l ...

  10. 快排 PAT 1101

    1101 Quick Sort (25 分)   There is a classical process named partition in the famous quick sort algor ...