使用class对象作为参数化类型_Python面向对象(一)

什么是对象?

  • 对象:独立性、功能性、交互性

226fa4cd42914f370fd0c4b7f1a4748d.png
  • 万物皆对象,均继承于Object类

29d3df98964d39ef96218daf786caf3d.png
  • OOP:面向对象编程,本质含义在于复用代码,在较大规模或复杂项目中有用,提高写作产量

0d1bfb83d4d21531b5a77fad70ad110c.png
  • 面向对象和面向过程的对比

c42c933ebd0c7806dadb4f925b2684a5.png
  • 编程实例

11f46ad78412802fe5bed9b28568994c.png

面向过程的程序解决方法:

dba70e0d7a4ea274f857009685ba92a4.png

面向对象:

30ffea1756e3056c6c8b27aee345a3ef.png
  • 面向对象的3个特征:封装、继承、多态
  • 封装:属性和方法的抽象

eddcc6f5b7f0909b80ece6c04cb63a99.png
  • 继承:高级复用,几乎完全使用原有类属性与方法
  • 多态:针对方法和方法灵活性的抽象;同一个名字的方法可以处理多种数据类型、多个不同参数

aba8080705faf30b1f581b5f5efcc7b2.png

面向对象术语

  • 类Class 对象 Object

类是一种抽象,一般不使用类进行运算,通过类来生成对象进行运算。对象在面向对象编程中,相当于程序的变量。实例化就是从类到对象的过程。对象是根据模板【类】生成的实际的功能。

属性:存储数据的变量

方法:操作数据的函数

对象:类对象、实例对象

  • 类对象、实例对象

47fafd415174706495a7f336e685d739.png
  • 其他术语

b392e4cd5f2d06bd0e123d0b2fa2c6e4.png

ba3901b9f9980b895fc952a2efee273d.png

面向对象的练习实例

  • 如何用Class对象解决该问题?

11f46ad78412802fe5bed9b28568994c.png
class 
  • OOP更易于理解

类的构建

  • 类,class。

b23bb08fa68f10c4cd06d7a411cc79e8.png

类定义不限位置,可以包含在分支或其他丛书语句块中,执行时存在即可

d3ea27e379d2d029e564fcb4b5e7c838.png

其中,大写单词组合指首字母大写的组合。<类名>.__doc__访问类描述,doc前面为两个下划线。

789f9c829a63efed688e0ab8977b3c13.png
访问类描述
  • 类对象:默认在类定义完成后,默认生成类对象
  • 实例对象:类最常用的使用方式

57081833bf4274a500e9b38631bb127c.png
  • 类的构造函数:

1) 用于从类创建实例对象的过程

2)为实例对象提供了参数输入过程

3) 为实例对象的属性定义和赋值提供支持

  • 属性和方法是类对外交互的方式,是接口
  • 类对象全局只有一个,实例对象可生成多个

  • 使用python解释器预定义的__init__()作为构造函数,可以为python对象提供参数。可以接收参数并完成初始操作。其中,self只在类内部使用。

f3f471afbffce8e8b4aa496d05167e04.png

dda7907c1c3d713520be4a58826a7ad5.png

  • 类属性:类对象的属性,所有实例对象所共享
  • 实例属性:实例对象的属性,由各实例对象所独享
  • 访问类属性,不管在类内还是类外,使用<类的名字>.<属性名>访问;访问实例属性,在类内部,使用self.<属性名>访问;在类外部,用<对象名>.<属性名>访问

95732690cf7c07a725ef52fb4dbe2b24.png

类的方法

  • 方法是类内部定义的函数

31daaa09ce8fecaaa1a7d096ed29ae5f.png
  • 实例方法:最常用,形式如下,使用<对象名>.<方法名>访问实例方法。实例方法中,第一个参数必须是self

897231f4332e726d98f05ea9a25a9906.png
  • demo1:计算某人的幸运数字

054b3080679d20fb1dad567e85132110.png

访问实例属性,在类内部,使用self.<属性名>访问;在类外部,用<对象名>.<属性名>访问。实例方法在类外部访问,采用<对象名>.<方法名>。

'''
  • 类方法:与类对象相关的函数,由所有实例对象共享

91e587b85621c818d1739bc71c90fa1e.png

采用<类名>.<方法名>(<参数列表>)或者<对象名>.<方法名>(<参数列表>)方式访问

至少包含一个参数,表示类对象本身,建议用cls

必须包含@classmethod作为装饰器

只能操作类属性和其他类方法,不能操作实例属性和实例方法

  • demo2

b804f1f343353e412dd7df690008c35a.png
'''
  • 自由方法:定义在类命名空间中的普通函数,采用<类名>.<方法>(<参数列表>)方式访问,类名代表着对应的命名空间。

b24ecdfb97ffbb8f38e33faa50824321.png

自由方法可以没有参数

只能操作类属性和类方法,不能操作实例属性和实例方法

只能使用<类名>访问

  • demo3:

2120b0171ca8cd12802935ada6e6f8fd.png
'''
  • 静态方法:能够被所有实例对象共享的类中普通函数,仅需要增加装饰器@staticmethod【属于自由方法】

372fc4665161cb90fa7a77c8dd425a9b.png

可以用<类名/对象名>.<方法>(<参数列表>)

仍然只能操作类属性和其他类方法,不能操作实例属性和实例方法【同样没有引入self参数】

  • demo4:

b580963b4689b7f8f70afeb85c49e037.png
'''
  • 保留方法:由双下划线开始、结束的方法,保留使用

814f9759496f05cd3a0d2e15e5cd064a.png

975a8ea80d98caf4e4de2b9f5701cc4e.png
# 其中,__len__()方法对应len()函数操作可理解为:

学习链接:

Python学习嵩天老师 python面向对象精讲 侵删_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

非常感谢up主分享给大家一起学习,共同进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值