Python编程基础之类和对象

目录
  • 零、本讲学习目标
  • 一、面向对象
    • (一)程序员“面向对象”
    • (二)两种编程思想实现五子棋
    • (三)面向过程 vs. 面向对象
    • (四)面向对象三大特点
      • 1、封装(encapsulation)
      • 2、继承(inheritance)
      • 3、多态(polymorphism)
  • 二、类和对象
    • (一)类和对象的关系
      • 1、概述
      • 2、示意图
    • (二)类的定义
      • 1、类的构成
      • 2、类定义语法格式
      • 3、案例演示
    • (三)创建对象
      • 1、语法格式
      • 2、给对象添加属性
      • 3、案例演示
  • 三、Python中的对象
    • (一)概述
    • (二)常用对象
      • 1、整数对象
      • 2、小数对象
      • 3、字符串对象
      • 4、函数对象
      • 5、模块对象
    • (三)两种对象
      • 1、类对象
      • 2、实例对象
  • 总结

零、本讲学习目标

  • 了解面向对象编程思想
  • 掌握类和对象的定义和使用
  • 了解Python中的对象

一、面向对象

(一)程序员“面向对象”

在现实世界中存在各种不同形态的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象间的关系来描述事物之间的联系,这种思想就是面向对象。

(二)两种编程思想实现五子棋

面向过程与面向对象的编程思想

若加入悔棋功能,面向过程和面向对象,分别怎么实现呢?

(三)面向过程 vs. 面向对象

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就可以了。(POP:Procedure-Oriented Programming)

面向对象则是把构成问题的事务按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。(OOP:Object-Oriented Programming)

(四)面向对象三大特点

面向对象是把构成问题的事务按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。一个应用程序会包含多个对象,通过多个对象的相互配合来实现应用程序的功能,这样当应用程序功能发生变动时,只需要修改个别的对象就可以了,从而使代码更容易得到维护。面向对象的特点主要可以概括为封装性、继承性和多态性。

1、封装(encapsulation)

封装是面向对象的核心思想,将对象的属性(property)和行为(behavior)封装起来,不需要让外界知道具体实现细节。

2、继承(inheritance)

继承主要描述的就是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展(extend)。

3、多态(polymorphism)

多态指的是在一个类中定义的属性和功能被其他类继承后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同行为特性。

二、类和对象

(一)类和对象的关系

1、概述

面向对象的编程思想,力图让程序中对事物的描述与该事物在现实中的形态保持一致。为了做到这一点,面向对象的思想中提出了两个概念——类和对象。

类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。简而言之,类是模板(template),对象是实例(instance)。

2、示意图

分析: 可以将上图人看作是一个类,将每个具体的人(如小韩、小石等)看作对象,从人与具体个人之间的关系便可以看出类与对象之间的关系。

说明: 类用于描述多个对象的共同特征,它是对象的模板,而对象用于描述现实中的个体,它是类的实例。对象是类的具体化,并且一个类可以对应多个对象。

(二)类的定义

1、类的构成

  • 类的名称:类名,首字母必须大写,比如Person
  • 类的属性:一组数据,比如姓名、性别、年龄……(描述类的特征 - 静态)
  • 类的方法:允许进行操作的方法,比如说话、步行、跑步……(描述类的行为 - 动态)

2、类定义语法格式

使用class关键字来声明一个类

class 类名:
    类的属性
    类的方法

定义的类继承了一个或多个父类

class 类名(父类1, 父类2, …, 父类n):
    类的属性
    类的方法

3、案例演示

编写程序 - 类定义演示.py

(三)创建对象

1、语法格式

  • 利用无参构造方法创建对象:对象名 = 类名()
  • 利用有参构造方法创建对象:对象名 = 类名(参数列表)

2、给对象添加属性

对象名.新属性名 = 值

3、案例演示

编写程序 - 基于类创建对象.py

运行程序,查看结果

修改对象属性值,再访问对象方法

  • 由此可见,在Person类里定义三个属性name、gender、age,所有基于该类的对象都具有同样的初始值,然后可以根据需要修改对象的属性值。
  • 基于Person类再创建一个对象father,调用speak()方法,修改对象属性值,再调用speak()方法

三、Python中的对象

(一)概述

  • 在前面,我们已使用过多种对象:整数对象、小数对象、字符串对象、函数对象、模块对象等。
  • 用dir()函数查看一个对象有哪些属性与方法

(二)常用对象

1、整数对象

(1)查看整数对象的属性和方法

执行:dir(int)

['__abs__',
 '__add__',
 '__and__',
 '__bool__',
 '__ceil__',
 '__class__',
 '__delattr__',
 '__dir__',
 '__divmod__',
 '__doc__',
 '__eq__',
 '__float__',
 '__floor__',
 '__floordiv__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__index__',
 '__init__',
 '__init_subclass__',
 '__int__',
 '__invert__',
 '__le__',
 '__lshift__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__neg__',
 '__new__',
 '__or__',
 '__pos__',
 '__pow__',
 '__radd__',
 '__rand__',
 '__rdivmod__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rfloordiv__',
 '__rlshift__',
 '__rmod__',
 '__rmul__',
 '__ror__',
 '__round__',
 '__rpow__',
 '__rrshift__',
 '__rshift__',
 '__rsub__',
 '__rtruediv__',
 '__rxor__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__sub__',
 '__subclasshook__',
 '__truediv__',
 '__trunc__',
 '__xor__',
 'as_integer_ratio',
 'bit_length',
 'conjugate',
 'denominator',
 'from_bytes',
 'imag',
 'numerator',
 'real',
 'to_bytes']

(2)案例演示

查看整数的字节长度 - bit_length()

327的二进制位数是9,调用bin()函数将其转换成二进制:101000111(9位)

查看复数的实部和虚部

整数转换成字节数据 - to_bytes()

演示将整数1345转换成字节数据

演示将字节数据转换成整数

演示幂运算 - __pow__()

演示比较运算

2、小数对象

(1)查看小数对象的属性和方法

执行:dir(float)

['__abs__',
 '__add__',
 '__bool__',
 '__class__',
 '__delattr__',
 '__dir__',
 '__divmod__',
 '__doc__',
 '__eq__',
 '__float__',
 '__floordiv__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getformat__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__int__',
 '__le__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__neg__',
 '__new__',
 '__pos__',
 '__pow__',
 '__radd__',
 '__rdivmod__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rfloordiv__',
 '__rmod__',
 '__rmul__',
 '__round__',
 '__rpow__',
 '__rsub__',
 '__rtruediv__',
 '__set_format__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__sub__',
 '__subclasshook__',
 '__truediv__',
 '__trunc__',
 'as_integer_ratio',
 'conjugate',
 'fromhex',
 'hex',
 'imag',
 'is_integer',
 'real']

(2)案例演示

保留小数位数 - __round__()

演示幂运算 - __pow__()

3、字符串对象

(1)查看字符串对象的属性和方法

执行:dir(str)

['__add__',
 '__class__',
 '__contains__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rmod__',
 '__rmul__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'capitalize',
 'casefold',
 'center',
 'count',
 'encode',
 'endswith',
 'expandtabs',
 'find',
 'format',
 'format_map',
 'index',
 'isalnum',
 'isalpha',
 'isascii',
 'isdecimal',
 'isdigit',
 'isidentifier',
 'islower',
 'isnumeric',
 'isprintable',
 'isspace',
 'istitle',
 'isupper',
 'join',
 'ljust',
 'lower',
 'lstrip',
 'maketrans',
 'partition',
 'replace',
 'rfind',
 'rindex',
 'rjust',
 'rpartition',
 'rsplit',
 'rstrip',
 'split',
 'splitlines',
 'startswith',
 'strip',
 'swapcase',
 'title',
 'translate',
 'upper',
 'zfill']

(2)案例演示

判断字符串是不是全为数字构成 - isdigit()

判断字符串是不是全为字母构成 - isalpha()

4、函数对象

定义函数

查看函数类型

将函数对象赋值给变量

5、模块对象

导入模块并查看类型

访问模块的属性与函数

将模块对象赋值给变量

(三)两种对象

在Python的对象模型中,有两种对象:类对象和实例对象。类对象是在执行class语句时创建的,而实例对象是在调用类的时候创建的。每调用一次类,便创建一个实例对象。类对象只有一个,而实例对象可以有多个。类对象和每个实例对象都分别拥有自己的命名空间,在各自的命名空间内存储属于自己的数据。

1、类对象

  • Python执行class语句时创建一个类对象和一个变量(名称就是类名称),变量引用类对象。与def类似,class也是可执行语句。导入类模块时,class语句被执行,创建类对象。
  • 类中的赋值语句创建的变量是类的数据属性。与模块类似,类中的顶层赋值语句创建的变量才属于类对象。类的数据数据用“对象名.属性名”格式来访问。
  • 类中的def语句定义的函数是类的方法属性,用“对象名.方法名()”格式来访问。

类的数据和方法由所有的实例对象共享。

2、实例对象

  • 实例对象通过调用类对象来创建(就像调用函数一样来调用类对象)。
  • 每个实例对象继承类对象的属性,并获得自己的命名空间。
  • 实例对象的“私有”属性。类的方法函数的第一个参数默认为self,表示引用方法的对象实例。在方法中对self的属性赋值才会创建属于实例对象的属性。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Python面向对象之入门类和对象

    目录 什么是面向对象编程? 定义类,从具体代码来感受吧! 多个类和对象的观察 补充一下类的属性(数据部分) 总结 什么是面向对象编程? 我们是不是听过面向过程,拿来放在一起对比就比较好理解了. 简单来理解,面向过程就是一切用函数解决一切文件,简单粗暴! 面向对象是面向过程编程之后才出现了,没有面向对象编程很多程序还不是照样开发. 面向对象,也使用函数,但是多了一个网,这个网把一个或者多个函数,和数据关联在一起,然后称为一类事物,也就是程序中的'类'(class) 定义类,从具体代码来感受吧! 面

  • Python面向对象之类和对象

    目录 类 定义类 定义类和属性 类中方法 对象方法(普通方法) 类方法 静态方法 魔术方法 对象 创建对象 对象属性 总结 类 定义类 所有类名首字母要求大写,多个单词时遵循驼峰命名法 所有未定义父类的类都继承object 格式:class 类名[(父类)]: #两种方式意思相同 class Person: pass class Person(object): pass 定义类和属性 name.age.subject就是类属性 class Student: #类属性 name = '' age

  • Python入门之面向对象和类

    目录 一.两大编程思想 二.类与对象 三.定义Python中的类 四.对象创建 五.类属性.类方法.静态方法 六.动态绑定属性和方法 七.面向对象的三大特征 八.方法重写 总结 一.两大编程思想 二.类与对象 简单举例: python中一切皆对象,开局一张图: 三.定义Python中的类 举例1: class Student: pass print(id(Student)) #1149225945800 print(type(Student)) #<class 'type'> print(St

  • Python面向对象编程之类的引用

    目录 1.引用的概念 2.对象的拷贝 2.1 实例方法的引用 2.2 类的特性装饰器 3.类的名称修饰 3.1 _单下划线开头的名称修饰 3.2 _单下划线结尾的名称修饰 3.3 __双下划线开头的名称修饰 3.4 __name__双下划线开头和结尾的名称修饰 3.5 单下划线 4.Python的最小空类 1.引用的概念 引用 (Reference)是对象的指针 引用是内存中真实对象的指针,表示为变量名或者内存地址 每个对象存在至少一个引用,id()函数用于获得引用 在传递参数和赋值时,Pyth

  • Python面向对象编程之类的运算

    目录 1.运算概念的理解 2.运算符的重载 2.1 算术运算符 2.2 比较运算符 2.3 成员运算 2.4 其他运算 3.Python类的多态 1.运算概念的理解 运算(Operation)是操作逻辑的抽象 运算体现一种操作逻辑,在广义角度来说任何程序都是一种运算 Python解释器通过保留方法预留了一批运算的接口,需要重载 保留方法一般对应运算符,Python中运算体现为运算符的重载 运算本质上体现了交互关系.包含关系和常规的操作关系 运算重载的限制 不能重载Python语言内置类型的运算符

  • Python编程基础之类和对象

    目录 零.本讲学习目标 一.面向对象 (一)程序员“面向对象” (二)两种编程思想实现五子棋 (三)面向过程 vs. 面向对象 (四)面向对象三大特点 1.封装(encapsulation) 2.继承(inheritance) 3.多态(polymorphism) 二.类和对象 (一)类和对象的关系 1.概述 2.示意图 (二)类的定义 1.类的构成 2.类定义语法格式 3.案例演示 (三)创建对象 1.语法格式 2.给对象添加属性 3.案例演示 三.Python中的对象 (一)概述 (二)常用

  • Python编程基础之构造方法和析构方法详解

    目录 一.本讲学习目标 二.构造方法 (一)概述 (二)案例演示 三.析构方法 (一)概述 (二)案例演示 四.self的使用 (一)self概述 (二)案例演示 总结 一.本讲学习目标 1.掌握构造方法的使用 2.掌握析构方法的使用 3.掌握self变量的使用 二.构造方法 (一)概述 构造方法指的是__init__()方法. 当创建类的实例的时候,系统会自动调用构造方法,从而实现对类进行初始化的操作. (二)案例演示 编写程序 - 演示构造方法.py 构造方法第一个参数 必须是self,表示

  • python编程进阶之类和对象用法实例分析

    本文实例讲述了python类和对象用法.分享给大家供大家参考,具体如下: 前面我们都是用python面向过程编程,现在来用python创建类和对象,面向对象编程.类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象这个类的 实例 .这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象).在python中,类和实例中的变量称为域,类和实例中的函数称为方法,域和方法都是类和实例的属性. 类的定义 在定义类或者它的函数的时候,如果没有参数的话,需要把参数写为self,这样

  • Python编程基础之函数和模块

    目录 二.函数 (一)定义函数 1.语法格式 2.函数类型 3.案例演示 (二)调用函数 1.简要说明 2.案例演示 (三)函数参数 1.参数的多态性 2.参数赋值传递 三.利用函数实现模块化 1.创建多级菜单系统 2.启动程序,查看效果 总结 一.函数和模块概述 (一)函数概述 函数可以看成是语句的集合,通过函数调用来执行其包含的语句.函数可以返回一个计算结果,根据每次函数调用的参数,可以返回不同的计算结果.Python利用函数提高代码的重用率,减少了代码冗余. 执行dir(__builtin

  • Python编程基础之字典

    目录 一.字典概念 二.字典操作 (一)创建字典 1.先创建空字典,再添加元素(键值对) 2.直接创建包含若干键值对的字典 (二)字典操作 1.读取字典元素 - 按键取值 2.添加字段元素 - 按键赋值 3.更新字典元素 4.遍历字典元素 5.删除字典元素 6.将字典拆分成键列表与值列表 7.将字典转换成键值元组构成的列表 8.基于两个等长列表创建字典 9.关于字典元素获取的缺省值 三.课后作业 任务1.将单词列表按首字母分类成列表字典 任务2.统计文件里每个单词的个数 总结 一.字典概念 字典

  • Python编程基础之运算符重载详解

    目录 学习目标 一.运算符重载 (一)概述 (二)加法运算重载符 1.概述 2.案例演示 总结 学习目标 1.掌握运算符重载 2.会定制对象字符串的形式 一.运算符重载 (一)概述 运算符重载是通过实现特定的方法使类的实例对象支持Python的各种内置操作 .例如:+运算符是类里提供的__add__这个函数,当调用+实现加法运算的时候,实际上是调用了__add__方法. 方法 说明 何时调用方法 __add__ 加法运算 对象加法:x+y,x+=y __sub__ 减法运算 对象减法:x-y,x

  • Python编程基础之输入与输出

    目录 一.IPO模型  二.基本输入 - input()函数 1.函数格式 2.参数说明 3.实例演示 (1)接收字符串数据 (2)接收整型数据 (3)接收浮点型数据 (4)容易出现的错误 三.基本输出 - print()函数 1.函数格式 2.参数说明 3.实例演示 (1)输出空行 (2)输出一个或多个对象 (3)指定分隔符 (4)指定结束符号 (5)输出到文件 (6)格式输出 (7)引申案例 - 输出斐波拉契数列 四.美观输出 - pprint()函数 1.pprint模块概述 2.ppri

  • 没编程基础可以学python吗

    Python是一门高级编程语言,而且Python语言适合零基础人员学习,也是初学者的首选. 如何学习好Python: 1. 要有决心 做任何事情,首先要有足够的决心和坚持,才能做好事情.学好Python. 2. 勤于动手 对于编程语言的学习,不能眼高手低,学的过程中,想到就要写出来,一方面能够培养出写代码的感觉,另一方面可以加深知识的掌控. 3. 一套完整的学习体系 Python编程语言的全面学习,需要拥有一整套系统的学习资料和学习计划,全面掌握Python基础知识,对以后解决Python编程过

  • 高考考python编程是真的吗

    现在只有山东.北京.上海等发达地区有考Python的这个举动,其他地区暂时还没有. 首先,Python类似于c++,Python是一种面向对象的解释型计算机程序设计语言,有荷兰人Guido van Rossum于1989年发明,它有丰富和强大的库,常被称为胶水语言,能够把其他语言制作的各种模块很轻松的联结在一起. 作为一种应用非常广泛的编程语言,在人工智能.数据科学.web应用.用户交互界面.自动化任务等方面,Python都有其用武之地. 但是Python作为高考科目,也能让孩子更早的接触计算机

  • Python面向对象编程基础解析(二)

    Python最近挺火呀,比鹿晗薛之谦还要火,当然是在程序员之间.下面我们看看有关Python的相关内容. 上一篇文章我们已经介绍了部分Python面向对象编程基础的知识,大家可以参阅:Python面向对象编程基础解析(一),接下来,我们看看另一篇. 封装 1.为什么要封装? 封装就是要把数据属性和方法的具体实现细节隐藏起来,只提供一个接口.封装可以不用关心对象是如何构建的,其实在面向对象中,封装其实是最考验水平的 2.封装包括数据的封装和函数的封装,数据的封装是为了保护隐私,函数的封装是为了隔离

随机推荐