天天看點

24-python_内部類-構造函數與析構函數-垃圾回收機制1. 内部類2. 構造函數 與 析構函數3. 垃圾回收機制

- 内部類

- 構造函數與析構函數

- 垃圾回收機制

1. 内部類

 1.1 概念

  類的内部定義的類, 相當于類的成員

 1.2 執行個體化

  1) outClassName.inClassName()

  2) outClassName().inClassName()

 1.3 例子

class MyOuterClass:
	"""docstring for ClassName"""
	def method(self) :
		print "hello"

	class MyInnerClass :
		var = "I am inner class"


if __name__ == "__main__":
	MyOuterClass().method()		
	print MyOuterClass().MyInnerClass().var
	print MyOuterClass().MyInnerClass.var
	print MyOuterClass.MyInnerClass.var
           

2. 構造函數 與 析構函數

 2.1 構造函數

  2.1.1 概念

  1) 函數名: __init__()

  2) 作用  : 初始化對象

  3) 執行時機: 對象初始化時被調用

  2.1.2 例子

class Demo :

	def __init__(self):
		print "I'm  __init__()"

if __name__ == '__main__':
	Demo()
           

 2.2 析構函數

  2.2.1 概念

  1) 函數名: __del__()

  2) 作用  : 對象銷毀之前 處理一些資源

  3) 執行時機: 對象銷毀時被調用

  4) 可以用内置函數 del(instance) 來銷毀

  2.2.2 例子  

class Destory :

	def __init__(self):
		print "init myself"

	def __del__(self):
		print "ruin myself"

if __name__ == '__main__':
	instance = Destory()
	print "do someting 11"
	#del instance
	#print "do someting 22"
           

3. 垃圾回收機制

 - Python采用 垃圾回收機制 來清理不再使用的對象

 - Python提供 gc子產品 釋放不再使用的對象

 - Python采用"引用計數"的算法方式來處理回收

   即, 當某個對象在其作用域内不再被其他對象引用時, 該對象就被自動清除

 - gc.collect() 可以一次性收集 所有待處理的對象