尽管文件底部的测试代码是有用的,但是有一个大问题,当文件作为脚本运行的时候,或者当它作为一个模块导入的时候,它的顶层的print语句都会运行。
class Person:
def __init__(self, name, job=None, pay=0):
self.name = name
self.job = job
self.pay = pay
if __name__ == '__main__':
bob = Person('Bob Smith')
sue = Person('Sue Jones', job = 'dev', pay = 100000)
print(bob.name, bob.pay)
print(sue.name, sue.pay)
把文件作为顶层脚本运行的时候,测试它,因为其__name__是__main__,但随后将它作为类库导入的时候,则不会这么做。