正常情况下,当我们定义了一个 class,创建了一个class 的实例后,我们可以给该实例绑定任何属性和方法,…
在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s …
继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。 回忆一下 Animal 类层次的…
看到类似 __slots__ 这种形如 __xxx__ 的变量或者函数名就要注意,这些在 Python 中是有…
当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR …
type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。 比方…
在程序运行过程中,总会遇到各种各样的错误。 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符…
在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在…
程序能一次写完并正常运行的概率很小,基本不超过 1%。总会有各种各样的 bug 需要修正。有的 bug 很简单…
如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。 单…