python基础
1.面向对象概念
构造函数:构造函数,类在实例化的时候,会自动执行它
__init__方法:属于python语言的构造函数,一个类只能有一个__init__方法
1 import pymongo 2 class My: 3 country='china' 4 def __init__(self): 5 print('1.构造函数,类在实例化的时候,会自动执行它') 6 self.client = pymongo.MongoClient(host='118.24.3.444', port=27017) 7 # self.f=open('a.txt') 8 9 def __del__(self): 10 #析构函数,实例被销毁时,自动执行 11 self.client.close() 12 # self.f.close() 13 print('2.析构函数,实例被销毁时,自动执行: 什么时候执行我') 14 15 def say(self): 16 print('我是牛奶') 17 self.__car() 18 19 def cry(self): 20 print('开始哭了') 21 22 m=My() #实例化 23 # del m 24 print('3.qqqqqq') 25 for i in range(5): 26 print(i)
1 1.构造函数,类在实例化的时候,会自动执行它 2 3.qqqqqq 3 0 4 1 5 2 6 3 7 4 8 2.析构函数,实例被销毁时,自动执行: 什么时候执行我
析构函数:构函数,实例被销毁时,自动执行
__del__方法
:属于python语言的析构函数,
它在对象消逝的时候被调用。它一般适用于程序结束时,比如:关闭数据库连接等。
上图中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。
__del__()也是可选的,如果不提供,则Python 会在后台提供默认析构函数
如果要显式的调用析构函数,可以使用del关键字,方式如下:
del对象名
1 import pymongo 2 class My: 3 country='china' 4 def __init__(self): 5 print('1.构造函数,类在实例化的最开始时候,会自动执行它') 6 self.client = pymongo.MongoClient(host='118.24.3.444', port=27017) 7 # self.f=open('a.txt') 8 9 def __del__(self): 10 #析构函数,实例被销毁时,自动执行 11 self.client.close() 12 # self.f.close() 13 print('2.析构函数,实例被销毁最后时,自动执行: 什么时候执行我') 14 15 def say(self): 16 print('我是牛奶') 17 self.__car() 18 19 def cry(self): 20 print('开始哭了') 21 22 m=My() #实例化 23 del m # 当使用del 删除对象时,会调用他本身的析构函数 24 print('3.qqqqqq') 25 for i in range(5): 26 print(i)
1 1.构造函数,类在实例化的时候,会自动执行它 2 2.析构函数,实例被销毁时,自动执行: 什么时候执行我 3 3.qqqqqq 4 0 5 1 6 2 7 3 8 4
私有: 一个函数名/变量名前加__,就表示私有,只能在类里面用;出了类不能调用
私有变量只能在类里面使用,出了这个类,就不能调用
1 import pymongo 2 class My: 3 country='china' 4 def __init__(self): 5 print('1.构造函数,类在实例化的最开始时候,会自动执行它') 6 self.client = pymongo.MongoClient(host='118.24.3.444', port=27017) 7 # self.f=open('a.txt') 8 9 def __del__(self): 10 #析构函数,实例被销毁时,自动执行 11 self.client.close() 12 # self.f.close() 13 print('2.析构函数,实例被销毁时,自动执行: 什么时候执行我') 14 15 def say(self): 16 print('我是牛奶') 17 self.__car() 18 19 def cry(self): 20 print('开始哭了') 21 def __car(self): #一个函数名/变量名前加__,就表示私有,只能在类里面用;出了类不能调用 22 print('car开始哭了') 23 24 m=My() #实例化 25 # del m # 当使用del 删除对象时,会调用他本身的析构函数 26 print('3.qqqqqq') 27 m.__car() # 运行结果:AttributeError: 'My' object has no attribute '__car' 28 a=m 29 print(a)
1 1.构造函数,类在实例化的最开始时候,会自动执行它 2 3.qqqqqq 3 Traceback (most recent call last): 4 File "G:/python-DownLoad/练习code/day9/练习.py", line 27, in <module> 5 m.__car() # 运行结果:AttributeError: 'My' object has no attribute '__car' 6 AttributeError: 'My' object has no attribute '__car' 7 2.析构函数,实例被销毁时,自动执行: 什么时候执行我