菜鸟学python

任务七

nonlocal关键字

nonlocal 用来声明外层的局部变量
global 用来声明全局变量
!输出在这里插入图片描述

LEGB原则

python在查找“名称”时,是按照LEGB规则查找的:Local—Enclosed–Global—Built in
Local 指的就是函数或者类的方法内部
Enclosed 指的是嵌套函数(一个函数包裹另一个函数,闭包)
Global 指的是模块中的全局变量
Built in 指的是Python为自己保留的特殊名称。
按此顺序,如果一个名称在所有命名空间中没有找到,就会产生一个NameError.

面向对象编程

主要针对大型软件设计而来,使得程序拓展性强,可读性好,使得编程可以像搭积木一样简单。
它将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,从而大大提高编程效率。
Python支持面向过程,面向对象,函数式编程等多种编程范式。
面向过程适合小规模程序,面向对象适合编写大规模程序。

类的定义

Python中,一切皆对象,类也称为类对象,类的实例也称为实例对象。

  1. 类名必须符合“标识符”的规则,一般规定,首字母大写,多个单词使用“驼峰原则”;
  2. 类体中,我们可以定义属性和方法;
  3. 属性用来描述数据,方法用来描述这些数据相关的操作。在这里插入图片描述
    在这里插入图片描述

构造函数__init__

我们需要通过类这个模板,创建类的实例对象,然后才能使用类的定义。
Python对象包含如下部分:
1.id(识别码)
2.type(对象类型)
3.value(对象的值)
(1)属性
(2)方法
init()的要点如下:
1.名称固定,必须为:init()
2.第一个参数固定,必须为:self.self指的是刚刚创建好的实例对象
3.构造函数通常用来初始化实例对象的实例属性。

实例属性

1.实例属性一般在__init__()方法中通过如下代码定义:
self.实例属性名=初始值
2.在本例的其他实例方法中,也是通过self进行访问:
self.实例属性名
3.创建实例对象后,通过实例对象访问:
obj01=类名()
obj01.实例属性名=值

实例方法

实例方法是从属于实例对象的方法。实例方法的定义格式如下:
def 方法名(self[,形参列表]):
函数体
方法的调用格式:
对象.方法名(【实参列表】)

类属性和类方法

类属性的定义方式:
class 类名:
类变量名=初始值
在类中或者类的外面,可以通过:‘类名.类变量名’来读写
在这里插入图片描述在这里插入图片描述

类方法

类方法是属于类对象的方法。类方法通过装饰器@classmethod来定义,格式如下:
@classmethod
def 类方法名(cls [,形参列表]):
函数体

要点如下:
1.@classmethod必须位于方法上面一行
2.第一个cls必须有;cls指的就是‘类对象’本身;
3调用类方法格式:‘类名。类方法名(参数列表)’。参数列表中,不需要也不能给cls传值。
4.类方法中访问实例属性实例方法会导致错误
5.子类继承父类方法时,传入cls是子类对象,而非父类对象。
在这里插入图片描述5.

__del __方法(析构函数)和垃圾回收机制

__del__方法称为“析构方法”,用于实现对象被销毁时所需的操作。比如:释放对象占用的资源,例如:打开的文件资源、网络连接等。
python实现自动的垃圾回收,当对象没有被引用时(引用计数为0),由垃圾回收器调用__del__方法。
我们也可以通过del与删除对象,从而保证调用__del__方法。
系统会自动提供__del__方法,一般不需要自定义析构方法。
在这里插入图片描述在这里插入图片描述

__call__方法和可调用对象

定义了__call__方法的对象,称为“可调用对象”,即该对象可以像函数一样被调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值