Scu_laji

Python底层的那些方法

最近在读 Python Cookbook,因为发现自己对 Python 的基础其实掌握的并不是很好,也许是一开始就从爬虫开始,略过了许多 python 中有趣的内容。

内置方法之__repr()与__str()

这个内置函数是一种良好的编程习惯,它能将函数的某些属性以 str 的形式表示出来。因为这么做可以简化调试过程和实例的输出。我们只用通过打印实例,就能了解到更多有关这个实例内容的有用信息。

1
2
3
4
5
6
7
8
9
10
class Pair:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return 'Pair({0.x!r},{0.y!r})'.format(self) # 当在python shell 中输入实例对象时,调用这个方法
def __str__(self):
return '({0.x!s},{0.y!s})'.format(self) # 当打印时,调用这个方法

当我们不可能打印所有的信息时,通常让其产生一段有帮助意义的文本。
以<>包起来

让对象支持上下文管理器

要让对象能够支持上下文管理器,我们需要实现__enter()和__exit()方法

第一个方法初始化环境,读取配置,并完成初始化操作

第二个方法清理环境,关闭资源。

创建可管理的属性

在对实例属性的获取和设定上,我们希望能增加一些额外的处理过程(比如类型检查,例如加密)

可以使用 property 来在属性的 setter 和 getter 上设定一些方法。

1
2
3
4
5
6
7
8
9
10
11
class User:
name = None
pass_hash = None
@property
def password(self):
raise AttributeError("password is not a readable attribute")
@passwoed.setter
def password(self, passwd):
self.pass_hash = # 加密密码

##