第8章
连载中......
8.1节
修改实例的字符串表示
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)
def __str__(self):
return '({0.x!s}, {0.y!s})'.format(self)
例子解释:
- 注意这里的{0.x!r}和.format(self)
- 这里特殊的格式化码!r表示应该用repr()的输出,而不是默认的str()。
使用案例:
>>> p = Pair(3, 4)
>>> print('p is {0!r}'.format(p))
p is Pair(3, 4)
>>> print('p is {0}'.format(p))
p is (3, 4)
>>>
- format()函数对应着format()魔法方法
- repr()函数对应着repr()魔法方法
8.3小节
让对象支持上下文管理协议
- 当遇到with语句的时候,enter()方法首先被触发执行。with的返回值被放置在as限定的变量当中。之后再执行with代码块内的语句,最后exit()方法被触发执行。