Python面向对象日志类的封装#学习猿地

2020-03-19 17:09:19 浏览数 (1)

### 成员方法中的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()

```

0 人点赞