Python 构造函数、 Python 析构函数、Python 垃圾回收机制

构造函数与析构函数

构造函数:

用于初始化类的内容部状态,Python提供的构造函数式 __init__();

__init__()方法是可选的,如果不提供,Python 会给出默认的__init__方法

一般数据的获取需要定义的get和set方法

析构函数:

用于释放对象占用的资源,Python 提供的析构函数式__del__();

__del__()也是可选的,如果不提供,则Python 会在后台提供默认析构函数

如果要显式的调用析构函数,可以使用del关键字,方式如下:

del对象名

垃圾回收机制

Python 采用垃圾回收机制来清理不再使用的对象;Python 提供gc模块释放

不再使用的对象,Python 采用‘引用计数’ 的算法方式来处理回收,

即:当某个对象在其作用域内不再被其他对象引用的时候,Python 就自动清除对象;

Python 的函数collect()可以一次性收集所有待处理的对象(gc.collect())

—————————————————————————分割线——————————————————————————————————

一:函数

  如果你需要在程序中重用代码,---------定义函数。 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 垃圾回收机制,布布扣,bubuko.com

时间: 2024-10-11 21:54:53

Python 构造函数、 Python 析构函数、Python 垃圾回收机制的相关文章

(一)Python入门-6面向对象编程:04__del__方法(析构函数)和垃圾回收机制-__call__方法和可调用对象

一:__del__方法(析构函数)和垃圾回收机制 __del__方法称为“析构方法”,用于实现对象被销毁时所需的操作.比如:释放对象 占用的资源,例如:打开的文件资源.网络连接等. Python实现自动的垃圾回收,当对象没有被引用时(引用计数为 0),由垃圾回收器 调用__del__方法. 我们也可以通过del 语句删除对象,从而保证调用__del__方法. 系统会自动提供__del__方法,一般不需要自定义析构方法. [操作] #析构函数 class Person: def __del__(s

python的内存管理与垃圾回收机制学习

一.python内存申请: 1.python的内存管理分为六层:最底的两层有OS控制.第三层是调用C的malloc和free等进行内存控制.第四层第五层是python的内存池.最上层使我们接触的直接对python对象进行操作. 2.python申请对象时候小于256Byte的字节申请回直接使用python自己的内存分配系统,当大于256Byte的时候会调用malloc直接分配一个256k的大内存空间.释放内存空间时候会回收到内存池中而不是直接调用free释放掉. 3.深浅拷贝的不同(id?内存地

Python程序运行流程与垃圾回收机制

Python程序运行流程 Python解释器首先将程序将py文件编译成一个字节码对象PyCodeObject(只存在于内存中).(当这个模块的 Python 代码执行完后,就会将编译结果保存到了pyc文件中,这样下次就不用编译,直接加载到内存中.pyc文件只是PyCodeObject对象在硬盘上的表现形式.) py文件被编译后,接下来的工作就交由 Python虚拟机来执行字节码指令.Python虚拟机会从编译得到的PyCodeObject对象中依次读入每一条字节码指令,并在当前的上下文环境中执行

详解python的垃圾回收机制

python的垃圾回收机制 一.引子 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存空间给回收掉,而变量名是访问到变量值的唯一方式,所以当一个变量值没有关联任何变量名时,我们就无法再访问到该变量值了,该变量值就是一个垃圾会被python解释的垃圾回收机制自动回收 二.什么是垃圾回收机制 垃圾回收机制(简称GC)是python解释器自带的一种机制,专门用来回收不可用的变量值所占用的内存空间 三.为什么要用垃圾回收机制 程序运行过

04-3 python语法入门之垃圾回收机制

[TOC] 一 引入 ? 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那什么样的变量值是没有用的呢? ? 由于变量名是访问到变量值的唯一方式,所以当一个变量值不再关联任何变量名时,我们就无法再访问到该变量值了,该变量值就是没有用的,就应该被当成一个垃圾回收.毫无疑问,内存空间的申请与回收是非常耗费精力的事情,而且存在很大的危险性,稍有不慎就有可能引发内存

python垃圾回收机制、与用户交互及运算符

一 垃圾回收机制详解(了解) 1.什么是垃圾回收机制 垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间 2.为什么要用垃圾回收机制 程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存是一件重要且繁杂的事情,而python解释器自带的垃圾回收机制把程序员从繁杂的内存管理中解放出来. 3.垃圾回收机制原理分析 Python的GC模块主要运用了“引用计数”(refe

Python之垃圾回收机制与用户交互

Python之垃圾回收机制与用户交互 垃圾回收机制 垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间 为什么要用垃圾回收机制? 程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存是一件重要且繁杂的事情,而python解释器自带的垃圾回收机制把程序员从繁杂的内存管理中解放出来. 垃圾回收机制原理分析 Python的GC模块主要运用了"引用计数"(ref

《python解释器源码剖析》第17章--python的内存管理与垃圾回收

17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理python还提供了了内存的垃圾回收(GC,garbage collection),将开发者从繁琐的手动维护内存的工作中解放出来.这一章我们就来分析python的GC是如何实现的. 17.1 内存管理架构 在python中内存管理机制是分层次的,我们可以看成有四层,0 1 2 3.在最底层,也就是第0层是

python--关于垃圾回收机制的一些理解

python垃圾回收机制小问题 # python 中关于命名空间和垃圾回收机制 print([] == []) # True print([] is []) # False print(id([]), id([])) # 35156656 35156656 # 因为值相同,所以为True # 解释:python解释器在读到第一个空列表,会开辟一个内存空间给它,再读第二个空列表,会开辟一个新的内存空间,故id不同 # 内存地址相同:python解释器在读到第一个空列表时,会开辟一个内存空间,当读到