Python 构造函数、 Python 析构函数、Python 垃圾回收机制
构造函数与析构函数
也就是当该类被实例化的时候就会执行该函数。那么我们就可以把要先初始化的属性放到这个函数里面。如下程序:
析构函数:
上图中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。
__del__()也是可选的,如果不提供,则Python 会在后台提供默认析构函数
—————————————————————————分割线——————————————————————————————————
一:函数
如果你需要在程序中重用代码,---------定义函数。 def 函数名(参数)://todo
如:
输出:
也可以将函数的参数定义为默认参数,注:默认参数一般放参数的最后,如:
输出:
二:类
类的定义应该是放在面向对象的标题里,但是我们一般函数定义在类里面,从这个范围来说,我在这记录了类。
类和对象是面向对象编程的两个主要方面。类:创建一个新类型,而对象是这个类的实例,类使用class关键字创建。类的域和方法被列在一个缩进块中。
注意:在python语言中,不管什么类型的实例都被看做对象,如整数也被作为对象看待,它属于int类,这和其他语言c++,java把整数纯粹作为类型是不同的。
”域“的概念:
属于一个对象或类的变量被称为域,其实就是类里面定义的变量
域——类的变量和对象的变量
1:类的变量:由一个类的所有对象(实例)共享使用,只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。我理解为:其实它就是一个类的全局变量,类实例化后的对象都可以调用该变量。
2:对象的变量: 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。我理解的是:不同的对象调用该变量,其值改变后互不影响,跟C#的语法一样,我还因为不理解第一点纠结了半天 !
属于类级别的变量,在使用它的时候一定要带上类型名字 比如 MyClass.count
属于每个对象级别的变量,在调用的时候一定要带上self表明属于当前对象。self.name
如:
输出:
域(变量)和方法(函数)可以合称为类的属性
类的方法:
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self
。(类似于c#的this指针)
如:
__init__方法:属于python语言的构造函数,一个类只能有一个__init__方法
__del__方法
:属于python语言的析构函数,
它在对象消逝的时候被调用。
当对象不再被使用时,__del__
方法运行,但是很难保证这个方法究竟在 什么时候 运行。如果你想要指明它的运行,你就得使用del
语句
三:模块
模块:如果你想要在其他程序中重用很多函数--------定义模块。其实就是很多的类型,很多的方法集合在一个或多个文件中,通过import ** 载入,类似于c#中的dll
模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py
为扩展名。
注意:每个模块都有自己的名称__name__,__name__作为模块的内置属性,它的作用就是检测.py文件的调用方式,然后根据__name__做出相应的处理。
模块有两种调用方式:1:被import载入调用 2:直接使用
如果模块直接执行,__name__="__main__"; 通常,此语句用于模块测试中使用。
例如:定义一模块名字为MyModule.py
直接运行输出:
通过其他模块调用:
调用模块代码:
间接调用运行输出:
导入部分类,函数及变量,可以使用from...import... 例如 from MyModule import ModuleClass
Python 构造函数、 Python 析构函数、Python 垃圾回收机制的更多相关文章
- python的内存管理与垃圾回收机制学习
一.python内存申请: 1.python的内存管理分为六层:最底的两层有OS控制.第三层是调用C的malloc和free等进行内存控制.第四层第五层是python的内存池.最上层使我们接触的直接对 ...
- Python程序运行流程与垃圾回收机制
Python程序运行流程 Python解释器首先将程序将py文件编译成一个字节码对象PyCodeObject(只存在于内存中).(当这个模块的 Python 代码执行完后,就会将编译结果保存到了pyc ...
- python进阶(7)垃圾回收机制
Python垃圾回收 基于C语言源码底层,让你真正了解垃圾回收机制的实现 引用计数器 标记清除 分代回收 缓存机制 Python的C源码(3.8.2版本) 1.引用计数器 1.1环状双向链表 refc ...
- Python的内存管理和垃圾回收机制
内存管理 Python解释器由c语言开发完成,py中所有的操作最终都由底层的c语言来实现并完成,所以想要了解底层内存管理需要结合python源码来进行解释. 1. 两个重要的结构体 include/o ...
- python全栈开发day103-python垃圾回收机制、mro和c3算法解析、跨域jsonp\CORS、Content-Type组件
Python垃圾回收 -- 引用计数 -- Python为每个对象维护一个引用计数 -- 当引用计数为0的 代表这个对象为垃圾 -- 标记清除 -- 解决孤立的循环引用 -- 标记根节点和可达对象 - ...
- 详解python的垃圾回收机制
python的垃圾回收机制 一.引子 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存空间给回收掉,而变量名是访问到变量值的唯一方式 ...
- Python中的垃圾回收机制
Python的垃圾回收机制 引子: 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,而变量名是访问到变量值的唯一方式,所以 ...
- python入门之垃圾回收机制
目录 一 引入 二.什么是垃圾回收机制? 三.为什么要用垃圾回收机制? 四.垃圾回收机制原理分析 4.1.什么是引用计数? 4.2.引用计数扩展阅读 4.2.1 标记-清除 4.2.2 分代回收 一 ...
- Python语法之垃圾回收机制
目录 一 引入 二.什么是垃圾回收机制? 三.为什么要用垃圾回收机制? 四.垃圾回收机制原理分析 4.1.什么是引用计数? 4.2.引用计数扩展阅读 一 引入 解释器在执行到定义变量的语法时,会申请内 ...
- 编程语言分类,Python代码执行,应用程序使用文件的三步骤,变量,常量,垃圾回收机制
编程语言分为 机器语言(直接用二进制01跟计算机直接沟通交流,直接操作硬件) 优点:计算机能够直接读懂,速度快 缺点:开发效率极低 汇编语言(用简单的英文标签来表示二进制数,直接操作硬件) 优点:开发 ...
随机推荐
- Tomcat 监控的几种方法
Tomcat 监控方法 方法1:.使用tomcat自带的status页 具体方法: 步骤1:修改%tomcat安装路径%\conf \tomcat-users文件,配置admin设置权限.在<t ...
- NET框架 Castle
Castle是针对.NET平台下的一个非常优秀的开源项目,从数据访问框架 ORM到依赖注入容器,再到WEB层的MVC框架.AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提 ...
- spoj 694 求一个字符串中不同子串的个数
SPOJ Problem Set (classical) 694. Distinct Substrings Problem code: DISUBSTR Given a string, we need ...
- Coreseek-带中文分词的Sphinx
Sphinx并不支持中文分词, 也就不支持中文搜索, Coreseek = Sphinx + MMSEG(中文分词算法) 1.下载 1).到官网下载 2).解压后有三个文件夹 csft-3.2.14: ...
- easyui 动态加载语言包
解决办法是:把语言包中的语言类型写到cookie,动态修改cookie中的语言名称,修改完后重新渲染一下页面. 在页面加载完成后,先判断cookie存不存在,如果不存在就写入默认语言,存在就给easy ...
- STL 容器(vector 和 list )
1.这个容器的知识点比较杂 迭代器的理解: 1.erase()函数的返回值,它的迭代器在循环遍历中的奇特之处: #define _CRT_SECURE_NO_WARNINGS #include < ...
- AHM ---301重定向
使用amh.conf 或重新创建一个test.conf配置文件 .保存目录 /usr/local/nginx/conf/rewrite 例如跳到 www.shuaixingkeji.com if ($ ...
- Swift新手教程12-可选链
可选链 原创Blog,转载请注明出处 我的博客地址 http://blog.csdn.net/hello_hwc 可选链提供一个一种可选的方式訪问对象的属性.方法.下标脚本,可选链的返回值一定是可选类 ...
- nekohtml转换html时标签变大写的问题
public static Document transferByNeko(InputStream stream, String charset) { if (stream == null) retu ...
- 655. Big Integer Addition【easy】
Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2 ...