【day9】静态方法/构造函数/析构函数/继承/封装/多态/多线程、多进程

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.析构函数,实例被销毁时,自动执行: 什么时候执行我
View Result

      析构函数:构函数,实例被销毁时,自动执行

__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
View Result

私有: 一个函数名/变量名前加__,就表示私有,只能在类里面用;出了类不能调用

私有变量只能在类里面使用,出了这个类,就不能调用

 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.析构函数,实例被销毁时,自动执行: 什么时候执行我
View Result

猜你喜欢

转载自www.cnblogs.com/xhybk/p/9404562.html