Python 类与常见协议深入解析
1. 异常处理与属性操作
在 Python 中,处理属性操作时,异常处理至关重要。例如,在自定义属性字典时,以下代码展示了属性的获取、设置和删除操作:
class AttributeDict:
def __getitem__(self, name):
return self[name]
def __setattr__(self, name, value):
self[name] = value
def __delattr__(self, name):
del self[name]
d = AttributeDict(spam='eggs')
print(d['spam']) # 输出: eggs
print(d.spam) # 输出: eggs
d.spam = 'ham'
print(d.spam) # 输出: ham
del d.spam
try:
print(d.spam)
except KeyError as e:
print(f"KeyError: {e}")
需要注意的是,当属性不存在时,应抛出 AttributeError
而非 KeyError
,因为大多数代码会显式捕获特定类型的异常,抛出错误类型的异常可能导致其他代码执行错误路径。
2. 字符串表示
2.1 __str__()
方法
在 Pytho