python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python之类和对象

Python编程基础之类和对象

投稿:BJT

这篇文章主要为大家详细介绍了Python的类和对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

零、本讲学习目标

一、面向对象

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

(四)面向对象三大特点

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

1、封装(encapsulation)

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

2、继承(inheritance)

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

3、多态(polymorphism)

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

二、类和对象

(一)类和对象的关系

1、概述

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

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

2、示意图

在这里插入图片描述

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

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

(二)类的定义

1、类的构成 

2、类定义语法格式

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

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

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

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

3、案例演示

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

swwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

(三)创建对象

1、语法格式

2、给对象添加属性

对象名.新属性名 = 值

3、案例演示

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

在这里插入图片描述

运行程序,查看结果

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

 三、Python中的对象

(一)概述

(二)常用对象

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、类对象

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

2、实例对象

总结

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

您可能感兴趣的文章:
阅读全文