类成员_月隐学python第17课

目录

1.类成员

2 实例成员的动态绑定

3. 系统魔术⽅法

3.1 __init__ 和 __new__

3.2 算数运算符重载

3.3 迭代器

3.4 __call__

4.单例设计模式

4.1、设计模式概述

4.2 单例

4.3 实现

面向对象练习题


 


1.类成员

类成员包括:类属性和类⽅法,不同于成员属性和成员⽅法属于对象,类属性和类⽅法属于类,可以不实例化对象,直接通过类名调⽤,这些类成员为所有对象共有,⼀般⽤于对象间通信。

  • 在程序运⾏期间类属性始终存在
  • 类属性

类⽅法和静态⽅法

  • 类⽅法属于类,为所有对象共有,可以通过类名或对象调⽤
  • 类⽅法可以⽤来访问类属性
  • 静态⽅法属于类的作⽤域内的全局函数
  • 类⽅法和静态⽅法的区别,类⽅法第⼀个参数是类对象,由系统传⼊,静态⽅法没有
  • 共同点:静态⽅法和类⽅法都可以通过类名直接调⽤,属于类,不属于对象

2 实例成员的动态绑定

实例的属性和⽅法都可以动态绑定,也就是可以在程序运⾏期间可以给程序增加功能,这对于那些静态语⾔来说⽆异于天⽅夜谭,但对python来说⼀切皆有可能

  • 给对象动态添加的属性只属于这个对象,其它对象没有该属性
  • 使⽤__ slots__限制属性的动态绑定:
     

3. 系统魔术⽅法

3.1 __init__ 和 __new__

  • __ new__ ⽤于创建⼀个对象,有返回值; __new__ 是类⽅法;__ init__ ⽤于初始化对象,没有返回值
  • __new__ 默认参数是cls,系统传递的是类名, __init__ 默认参数是self,系统传递的是当前对象
  • __ new__ 先于__ init__ 执⾏

3.2 算数运算符重载

在python中⾃定义类的对象也可以象系统类型⼀样完成+、 -、 *、 /、索引、切⽚等运算,这有赖于python类有运算符重载功能

3.3 迭代器

如果想让⼀个类⽤于for-in 循环则必须实现__ iter__ 和__ next__ ⽅法

3.4 __call__

如果⼀个类实现了 __call__(slef, [,*args [,**kwargs]]) ⽅法,则该类的对象可以象函数⼀样调⽤。它是实现类装饰器的基础

4.单例设计模式

4.1、设计模式概述

1. 概念:对特定问题的⼀种解决⽅案,和平台、语⾔⽆关
2. 作⽤

  • 更好的理解⾯向对象
  • 让你的代码更加优雅
  • 使你的代码更加容易扩展和复⽤
  • ⾯试时候的重点

设计模式的⼀些基本原则

  • ⾼内聚,低耦合
  • 单⼀职责
  • 开闭原则(对修改封闭、对扩展开放)

4.2 单例

所谓单例也就是⼀个类只⽣成⼀个对象,⽆论你实例化多少对象,都是同⼀个对象
应⽤场景:数据库操作类,⽂件操作类等,可以减少资源的占⽤


4.3 实现

使⽤ __new__

面向对象练习题

1.⾯向对象的三大特征是:封装、继承、多态
2.代码补齐:

3.代码改错,并说明原因

4.以下代码输出什么

5.代码改正:

6.代码补⻬

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风中月隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值