python面向对象编程的三大特性,python是面向什么对象的编程语言
本文主要详细介绍Python的类和对象。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。
00-1010零、本次讲座的学习目标一、面向对象(一)程序员的“面向对象”(二)实现五子棋的两种编程思想(三)面向过程vs .面向对象(四)面向对象的三个特点1 .封装)2。继承)3。多态性。2.概述(2)类的定义1、类的组成2、类定义的语法格式3、案例演示(3)创建对象1、语法格式2、给对象添加属性3、案例演示3、Python中的对象(1)概述(2)常用对象1、整数对象2、小数对象3、字符串对象4、函数对象5、模块对象(3
目录
了解面向对象编程的思想,掌握类和对象的定义和使用,了解Python中的对象
零、本讲学习目标
一、面向对象
在现实世界中,事物有各种形态,这些事物之间有各种联系。用程序中的对象来映射现实中的事物,用对象之间的关系来描述事物之间的关系,这种思想是面向对象的。
(一)程序员“面向对象”
面向过程和面向对象的编程思想
如果加上后悔棋的功能,面向过程和面向对象,分别怎么实现?
(二)两种编程思想实现五子棋
面向过程就是分析解决问题需要的步骤,然后用函数把这些步骤一个一个实现,用的时候依次调用。(POP:面向过程编程)
面向对象把构成问题的事务按照一定的规则分成几个独立的对象,然后通过调用对象方法来解决问题。(OOP:面向对象编程)
(三)面向过程 vs. 面向对象
面向对象是将构成问题的事务按照一定的规则分成若干个独立的对象,然后通过调用对象方法来解决问题。一个应用程序将包含多个对象,应用程序的功能将通过多个对象的协作来实现。这样,当应用程序的功能发生变化时,只需要修改单个对象,从而使代码更容易维护。面向对象的特点可以概括为封装性、继承性和多态性。
(四)面向对象三大特点
封装是面向对象的核心思想,它结合了对象的属性和行为。
封装起来,不需要让外界知道具体实现细节。
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的属性赋值才会创建属于实例对象的属性。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT软件开发工作室的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。