面向对象(OOP)
  面向对象编程--object oriented programming 简写 OOP
 
面向过程和面向对象的区别:
面向过程:
  1.把完成某一个需求的所有步骤从头到尾逐步实现
  2.根据开发需求,将某些功能独立的代码封装成一个又一个函数
  3.最后完成的代码,就是顺序的调用不同的函数
特点:
  1.注重步骤与过程,不注重职责分工
  2.如果需求复杂,代码会变的很复杂
  3.开发复杂项目,没有固定的套路, 开发难度很大
 
面向对象:
  相比较函数,面向对象是更大的封装,根据职责中一个对象中封装多个方法
  1.在完成某个需求前,首先确定职责--要做的事情(方法)
  2.根据职责确定不同的对象,在对象内部封装不同的方法(多个)
  3.最后完成的代码,就是顺序地让不同对象调用不同的方法
特点:
  1.注重对象和职责,不同的对象承担不同的职责
  2.更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路
  3.需要在面向过程基础上,再学习一些面向对象的语法
 
 
类和对象的概念
类:
  类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用
  特征被称为属性
  行为被称为方法
  类是负责创建对象的
 
对象:
  对象是由类创建出来的一个具体存在,可以直接使用
  由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法
 
类和对象的关系
  类是模版,对象是根据类这个模版创建出来的,应该先有类,再有对象
  类只有一个,而对象可以有很多个
  不同对象直接属性可能各不相同
  类中定义了什么属性和方法,对象中就有什么属性和方法
 
类的设计
  在使用面向对象开发之前,应该首先分析需求,确定一下呈现中需要包含哪些类
 
  在程序开发中,要设计一个类,通常需要满足三个要素
  1.类名:这类事物的名字,满足大驼峰命名法
  2.属性:这类事物具有什么样的特征
  3.方法:这类事物具有什么样的行为
 
属性方法的确定
  对对象的特征描述,通常可以定义为属性
  对象具有的行为,通常可以定义为方法
  PS:需求中没有涉及的属性或者方法在设计类时,不需要考虑
 
面向对象基础语法:
  dir()内置函数:使用内置函数dir传入标识符/数据,可以查看对象内的所有属性和方法。dir(对象名)
 
  提示__方法名__格式的方式是python提供的内置方法/属性 也成为魔法方法
常用:
 
定义只包含方法的类:
格式:
 
创建对象
  当一个类定义完成之后,要使用这个类来创建对象,语法格式如下
  对象变量 = 类名()
 
格式练习:
在面向对象开发中,引用概念同样适用
在python中使用类创建对象之后,tom变量中仍然记录的是对象在内存中的地址
页就是tom变量引用了新建的猫对象
使用print输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)
 
id()函数:
  用于获取对象的内存地址
  格式:id(对象名)
  %d可以以10进制输出数字
  %x可以以16进制输出数字
 
一个类可以创建多个不同的对象,是不同的两个对象,指向不同的内存地址
 
给对象增加属性
  在python中,要给对象设置属性,非常的容易,但是不推荐使用,因为对象属性封装应该封装中类的内部
  只需要在类的外部代码中直接通过.设置一个属性即可
 
self参数
  哪一个对象调用的方法,self就是哪一个对象的引用
  在类封装方法内部,self就表示调用方法的对象自己
  调用方法时,程序不需要传递self参数
  在方法内部
  可以通过self.访问对象的属性
  也可以通过self.调用其他的对象方法
在类的外部给对象增加属性存在的问题,将name属性写到调用方法下面
属性错误,对象没有name属性
在日常开发中,不推荐在类的外部给对象增加属性,因为在运行时,找不到属性,程序会报错
对象应该包含哪些属性,应该封装在类的内部
 
初始化方法
 
当使用类名()创建对象时,会自动执行以下操作
  1.为对象在内存中分配空间 --- 创建对象
  2.为对象的属性设置初始值 --- 初始化方法(init)
  这个初始化方法就是 __init__ 方法,__init__是对象的内置方法
  __init__方法是专门用来定义一个类具有哪些属性的方法
 
在初始化方法内部定义属性
  在__init__方法内部使用 self.属性名 = 属性的初始值 就可以定义属性
  定义属性之后,再使用类创建的对象,都会拥有该属性
 
改造初始化方法---初始化同时设置初始值
在开发中,如果希望在窗口对象的同时,就设置对象的属性,可以对__init__方法进行改造
  1.把希望设置的属性值,定义成__init__方法的参数
  2.在方法内部使用self.属性 = 形参 接收外部传递的参数
  3.在创建对象时,使用类名(属性1,属性2...)调用
 
内置方法和属性
 
__del__方法
  在python中,使用类名()创建对象时,为对象分配完空间之后,自动调用调用__init__方法
  当一个对象被从内存中销毁前,会自动调用__del__ 方法
 
  应用场景
    __init__ 改造初始化方法,可以让创建对象更加灵活
    __del__ 如果希望中对象被销毁前,再做一些事情,可以考虑一下__del__方法,是销毁前执行的最后一个方法
 
生命周期
  一个对象从调用类名()创建,生命周期开始
  一个对象的__del__方法一旦被调用,生命周期结束
  在对象的生命周期内,可以访问对象属性,或者让对象调用方法
__del__不需要单独调用,对象销毁前会自动调用
 
可以使用del删除 对象,这时会立即执行__del__方法, 格式:del 对象名()
 
 
 
__str__方法
  在python中,使用print输出的对象变量,默认情况下, 会输出这个变量引用的对象是由那一个类创建的对象,以及内存地址
  如果中开发中,希望使用print输出对象变量时,能够打印自定义内容,可以使用__str__
  注意:__str__方法必须返回一个字符串
  什么时候调用对象变量,就什么时候调用__str_ 方法
 

1.Python面向对象基础的更多相关文章

  1. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  2. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  3. Python 面向对象基础知识

    面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...

  4. python 面向对象基础和高级复习

    面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...

  5. 十六、python面向对象基础篇

    面向对象基础: 在了解面向对象之前,先了解下变成范式: 编程范式是一类典型的编程风格,是一种方法学 编程范式决定了程序员对程序执行的看法 oop中,程序是一系列对象的相互作用 python支持多种编程 ...

  6. [python面向对象]--基础篇

    1.#类 #类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 #定义一个类 class bar: def foo(self,agr): print(self,agr) obj = bar() ...

  7. Python面向对象基础:编码细节和注意事项

    在前面,我用了3篇文章解释python的面向对象: 面向对象:从代码复用开始 面向对象:设置对象属性 类和对象的名称空间 本篇是第4篇,用一个完整的示例来解释面向对象的一些细节. 例子的模型是父类Em ...

  8. Python面向对象基础一

    公司可能过一两个月就要从深圳搬到东莞松山湖,项目组的现在有的在转Java或其他语言的,问我们要不要转java+hoodap+spark方向,我还是先不转,毕竟之前是从ios转回C#,这现在在转其他的那 ...

  9. python面向对象基础-01

    面向对象(OOP)基本概念 前言 话说三国时期曹军于官渡大败袁绍,酒席之间,曹操诗兴大发,吟道:喝酒唱歌,人生真爽! 众将直呼:"丞相好诗",于是命印刷工匠刻板印刷以流传天下; 待 ...

随机推荐

  1. 层次分明井然有条,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang包管理机制(package)EP10

    Go lang使用包(package)这种概念元素来统筹代码,所有代码功能上的可调用性都定义在包这个级别,如果我们需要调用依赖,那就"导包"就行了,无论是内部的还是外部的,使用im ...

  2. Windows 电脑杀毒简单有效的方式

    Windows 电脑杀毒通常会选择杀毒软件,这样太笨重,且容易占内存和存在流氓软件侵入. 推荐使用 Windows 自带的恶意软件删除工具 按住 Win + R 键,弹出运行窗口,输入 mrt. 系统 ...

  3. luoguP3224 [HNOI2012]永无乡【线段树,并查集】

    洞庭青草,近中秋,更无一点风色.玉鉴琼田三万顷,着我扁舟一叶.素月分辉,明河共影,表里俱澄澈.悠然心会,妙处难与君说. 应念岭表经年,孤光自照,肝胆皆冰雪.短发萧骚襟袖冷,稳泛沧溟空阔.尽挹西江,细斟 ...

  4. 微服务性能分析|Pyroscope 集合 Spring Cloud Pig 的实践分享

    随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...

  5. mysql存储过程的创建和调用

    描述:存储过程就是具有名字的一段代码,用来完成一个特定的功能.创建的存储过程保存在数据库的数据词典中. --创建一个名为GreetWorld的存储过程,拼接两个值 CREATE PROCEDURE G ...

  6. 基于ASP.NET Core 6.0的整洁架构

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本节将介绍基于ASP.NET Core的整洁架构的设计理念,同时基于理论落地的代码 ...

  7. wsl创建证书让chrome浏览器识别

    我在wsl里面测试http2协议的时候,在wsl用openssl创建了证书, 然后我把证书放在windows证书管理后,用chrome打开发现提示这个: 虽然可以点击下面的强制 访问 但是chrome ...

  8. 【设计模式】Java设计模式 - 责任链模式

    [设计模式]Java设计模式 - 责任链模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 目录 [设计模式]Java设计模式 - 责 ...

  9. rh358 004 bind反向,转发,主从,各种资源记录 unbound ansible部署bind unbound

    通过bind实现正向,反向,转发,主从,各种资源记录 7> 部署反向解析 从ip解析到fqdn vim /etc/named.conf zone "250.25.172.in-addr ...

  10. Dubbo-Adaptive实现原理

    前言 前面我们已经分析Dubbo SPI相关的源码,看过的小伙伴相信已经知晓整个加载过程,我们也留下两个问题,今天我们先来处理下其中关于注解Adaptive的原理. 什么是@Adaptive 对应于A ...