### 成员方法中的self
self在方法中只是一个形参,并不是关键字
self 单词本身的意思 自己
self 在类的方法中 代表 当前这个对象
self 代表调用这个方法的对象,谁调用了这个方法,self就代表谁
self 就可以在类的内部代替对象进行各种操作
### 方法的分类
含有self或者可以接受对象作为参数的方法: 非绑定类方法
不含self或者不能接受对象作为参数的方法:绑定类方法
非绑定类方法,可以使用对象去访问
绑定类方法,只能通过类去访问
----
### 魔术方法
> 魔术方法也和普通方法一样都是类中定义的成员方法
> 魔术方法不需要去手动调用的,魔术方法会在某种情况下,自动触发(自动执行)
> 魔术方法还有一个比较特殊的地方:就是多数的魔术方法 前后都有两个连续的下划线
> 魔术方法不是我们自己定义的,而是系统定义好的,我们来使用
#### `__init__`初始化方法
```
__init__ 初始化方法
触发机制:在通过类实例化对象后,自动触发的一个方法
作用: 可以在对象实例化后完成对象的初始化(属性的赋值,方法的调用。。)
应用场景: 文件的打开,数据的获取。。。干活前的一些准备功能。。。
```
#### `__del__`析构方法
```
__del__ 析构方法
触发机制:析构方法会在对象被销毁时自动触发
作用:关闭一些开发的资源
注意:是对象被销毁时触发了析构方法,而不是析构方法销毁了对象
对象会在哪些情况下被销毁?
1。 当程序执行完毕,内存中所有的资源都会被销毁释放
2。 使用 del 删除时
3。 对象没有被引用时,会自动销毁
```
示例:
> 定义一个类,完成一个日志的记录
> 调用这个对象的时候,传递一个日志信息
> 这个对象会创建一个文件,开始写入,并在最后关闭这个文件
```python
import time
class writeLog():
# 成员属性
# 文件的路径
fileurl = './'
# 日志文件的名称
filename = '2019-09-19'
# 初识化 打开文件
def __init__(self):
#完成文件的打开
print('初始化方法触发类。完成文件的打开')
self.fileobj = open(self.fileurl self.filename,'a ',encoding='utf-8')
# 写日志的方法
def log(self,s):
print(f'把日志:{s} 写入文件中')
# 析构方法
def __del__(self):
print('析构方法触发了,关闭打开的文件')
# 在对象被销毁时,关闭在初始化方法中打开的文件对象
self.fileobj.close()
```