面向过程编程:

  核心是过程两个字,指的是解决问题的步骤,即先干什么再干什么,基于面向过程设计的程序就好比在设计一条流水线,是一种机械的思维方式。

  优点:复杂问题流程化,

  缺点:程序的可扩展性差

面向对象编程:

  核心是对象两个字,对象指的是有特征(属性)及行为(方法)的具体的个体,面向对象本质上是将数据和处理数据的程序封装在类的本体中。

  优点:程序的拓展性强,解决问题的思路可以不止一条

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

类与对象:

  类:

    类即类别,种类,是面向对象设计最重要的概念,类可以理解为一系列对象特征与技能的结合体。

    在程序中,我们是先定义类,再通过类的实例化产生对象。

    定义语法:

        class 类名:

    类的使用:

      1. 引用类的属性
      2. 调用类得到实例化对象
      3. __init__方法

    注意:

    1. 类中可以有任意python代码,这些代码在类的定义阶段便会执行一次,会产生新的名称空间,用来存放类的变量名与函数名,可以通过.__dict__查看
    2. 类中定义的名字,都是类的属性,点语法 可以访问属性的方法
    3. 对于经典类来说,我们可以通操作字典来操作类的名称空间的名字,但是新式类有限制(python3中定义的类都是新式类,都会继承object)
class Student:
school = '清华' def __init__(self, name, age, sex):
name = name
age = age
sex = sex def choice(self):
print('choose course') print(Student.__dict__) # st1 = Student('zhangsan','18','male') s1 = Student()
s1.name = 'qzk' # 点语法访问name
# p1,p2虽然能被访问school,但是school属于Peple 类,只有一份,且被调用,
print(s1.school)
#
'''
# 小结:
# 类的对象,拥有名称空间
# 类拥有自己的名称空间
# 所以可以通过.语法来添加属于自己的功能或特征
# 类一旦被加载,就会进入类的内部执行类中的所有代码(随着所属文件的加载就加载,不依赖于类的调用)
# 属性的加载或访问顺序:
# 优先加载自己(对象)的属性
# 如果没有在考虑类
每个实例化的对象及类都有自己的名称空间
类与对象都可以拓展功能
提前在类中书写的属性与方法在对象一产生就可以使用这些属性和方法
类会随着所属文件的加载而加载(执行内部所有代码),形成类的名称空间
对象查找属性的顺序:
先找自己,如果没有,找类的(只有访问权没有修改权)
'''

属性查找顺序与绑定方法:

  查找顺序:

    以  obj.name 为例,会先从obj(对象本身)自己的名称空间找name,找不到这去类中找,类也找不到就去找父类.....最后都找不到就会抛异常。

  类的两种属性:

    1. 数据属性:类的数据属性是所有对象共享的(对象在使用类的数据属性的时候,本质上类的数据属性还是在类的名称空间中,对象的名称空间中是查找不到该数据属性的)
    2. 函数属性:类的函数属性是绑定给对象用的,称为绑定到对象的方法。

  绑定方法:

    1. 类中定义的函数(没有被任何装饰器装饰的)是类的函数属性,类可以使用,但是必须遵循函数的传参规则,有几个参数就需要传几个参数。
    2. 类中定义的函数(没有被任何装饰器装饰的)是类的函数属性,主要是给实例化的对象使用的,而且是绑定到对象,虽然所有实例化的对象指向类的函数属性都是相同的功能,但是绑定到不同的对象就是不同的绑定方法。
    3. 绑定到对象的方法的这种自动传值的特征,决定了在类中定义的函数都要默认写一个参数self,self可以是任意名字,但是约定俗成地写 self21

  

day22---面向对象基础初识的更多相关文章

  1. day22 面向对象基础

    1.什么是面向过程 在介绍面向对象之前,要先明确面向过程 在这之前我们所写的任何代码都是面向过程的 什么是面向过程? 是一种编程思想 面对 朝向 在编写代码时,要时刻想着过程这两个字 过程指的是什么? ...

  2. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  3. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

  4. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  5. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

  6. 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类

    078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...

  7. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  8. 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学

    076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...

  9. Java学习 · 初识 面向对象基础一

    面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...

  10. 周末班:Python基础之面向对象基础

    面向对象基础 面向对象和面向过程 编程思想是什么,就是用代码解决现实生活中问题的思路. 面向过程 核心点在过程二字,过程指的是解决问题的步骤,说白了就是先做什么再干什么.这种解决问题的思路就好比是工厂 ...

随机推荐

  1. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理

    在RDIFramework.NET以往的框架中,模块管理界面展示了整个框架所管理的所有模块,如果系统过多,达几十个甚至上百个子系统时,管理起来就非常的麻烦,不光加载效率会很低,页面展示也会很不友好.框 ...

  2. pycharm安装破解go插件

    pycharm 2018以前版本安装go插件可以直接在plugins中搜索 go 插件,然后安装.若是2018以后的版本,go 变成了收费插件,plugins 搜不到.然后Google了一下,有人提供 ...

  3. Spring Boot 2.x (二):How Hello World & 热部署

    本篇摘要 上一篇文章,我们构建了一个HelloWorld的程序,现在,我们来看一下这个程序,下面是我们这一节要分析的点. spring-boot-starter-boot @SpringBootApp ...

  4. 【细语】C#之扩展方法原理及其使用

    1.写在前面 今天群里一个小伙伴问了这样一个问题,扩展方法与实例方法的执行顺序是什么样子的,谁先谁后(这个问题会在文章结尾回答).所以写了这边文章,力图从原理角度解释扩展方法及其使用. 以下为主要内容 ...

  5. 利用Sklearn实现加州房产价格预测,学习运用机器学习的整个流程(包含很多细节注解)

    Chapter1_housing_price_predict .caret, .dropup > .btn > .caret { border-top-color: #000 !impor ...

  6. javascript基础修炼(7)——Promise,异步,可靠性

    开发者的javascript造诣取决于对[动态]和[异步]这两个词的理解水平. 一. 别人是开发者,你也是 Promise技术是[javascript异步编程]这个话题中非常重要的,它一度让我感到熟悉 ...

  7. win10下rdlc报表在vs(visual studio)中中文显示小方块的批量处理解决方法

    在网上找vs中rdlc报表显示中文时显示小方块的解决方案,无外就是修改文本框的字体属性.但是对于维护已有的rdlc报表时,有中文的地方(此时都显示了小方块)会很多,再一个一个设置实在太麻烦.所以自己花 ...

  8. 【JavaScript】封装实用方法【持续积累】

    介绍 主要记录一些平时积累或者常用方法或者小技巧的集合.以便在以后用到还要重复写或者忘记. 还有就是如果遇到好的方法封装值得收藏进行收藏.这里主要是记录一些包含JavaScript的一些积累.没有什么 ...

  9. js中slice,SubString和SubStr的区别

    来自:https://blog.csdn.net/qq_37120738/article/details/79086706 侵删 slice() 定义和用法 slice() 方法可从已有的数组中返回选 ...

  10. Dynamics 365中配置和使用文件夹级别的跟踪(folder-level tracking)

    本人微信和易信公众号:微软动态CRM专家罗勇 ,回复274或者20180630可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...