1.抽象基类
利用元类,就可以阻止类被实例化,抽象基类也是一种不能被实例化的类




通过使用抽象基类,报错提前了

2.模块和包
模块是py中最高级别的组织结构,也是最高层次的代码重用手段








会有重名问题:内置函数int会被自己定义的int函数覆盖




最后导入的,会覆盖之前导入的重名方法







测试的也打印出来了

模块在导入的时候,会从头到尾执行一遍所有语句,利用if_ name==" main _"
当模块当做脚本,独立执行的时候,它的_ name 属性被赋值为" main ",在模块代码执行之前,判断if name==" main _" 就可以解决

单独执行:

作为模块导入:



name的值就是模块的名称名称而非_ main _
包:
3.3之前需要有一个init这个文件,要不就识别不出是包了,3.3之后就不用了



init.py有承载的构造的功能,可以通过它进行包的初始化


可以定义包的全局变量:




跨文件几别,全局变量修改










不能在模块中使用使用这个包TC的,需要将其作为模块使用才可以





