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

2020-03-18 17:55:20 浏览数 (2)

### 成员方法中的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 人点赞