LBYL: Look before you leap.
EAFP. Easier to ask for forgiveness than permission.
例子来自于stackoverflow.
EAFP:
try:
x = my_dict["key"]
except KeyError:
# handle missing key
LBYL:
if "key" in my_dict:
x = my_dict["key"]
else:
# handle missing key
在编程防御上,LBYL 风格使用参数检查;EAFP 使用异常来处理。
duck typing
鸭子类型:在编程时,关注点在于对象的行为,能作什么;而不是关注对象所属的类型。
DBC:Design by Contract
契约式编程
mokey patching
猴子补丁:在程序运行时,给程序打补丁的方法。
MRO:method resolution order
方法决议顺序,指在多重继承时,调用方法时,解析的方法的顺序,即判断方法所属的命名空间。
恩,这个方法决议所使用的C3 算法 感觉远没有C++ 中的重载决议复杂(overload resolution).