文章目录
包和模块的管理
模块:
通常情况,结尾是py的脚本文件就是一个模块。
使用的原因:为了使代码更容易维护,提高代码重用价值;可以将一组相关功能的代码写入一个单独的.py文件中。供别人导入使用。这个.py文件就被称作是一个模块。
包
包 :Package 是一个有层次的文件结构目录,在一个包中,可以定义多个模块和 子包
为什么要使用包和模块
- 可以区分重命名的代码区域
- 实现代码的重用
- 实现数据的共享
使用模块的步骤
在模块的第一次导入中会发生以下的操作:
1、产生一个新的名称空间
2、运行xxxx.py代码,产生的名字都存放于1的名称空间中,运行过程中global关键字执行的就是该名称空间
3、在当前名称空间拿到一个名字xxxx,该名字指向1的名称空间
强调:
被导入的模块在执行过程中使用自己独立的名称空间作为全局名称空间
import 模块的名称(注意,导入的模块名称和运行模块名称的层级需要个运行模块所在的包同级才可以直接用import导入)
起别名:import xxxx as xx
如何使用模块->from 模块名 import 名字
from package1 import m1,就可以使用m1中的变量以及函数
代码:
import model
from model import page
'''as 是取别名的操作,调用model中的page变量,并把它命名成 p_m'''
from model import page as p_m
模块中调用方法的优先级(由高到底)
- 当前项目中的定义
- 环境变量中的模块
- 标准库中的模块
- 扩展库中的模块
前后带下划线的是python中的内置函数
model.py 中
page=3
def view():
print('model.view')
------------------------------------------
main.py
'''用系统的函数判断当前程序运行的name '''
if __name__ =='__main__':
'''在引入了modle之后,可以随意的调用'''
'''form(包名称)import(具体变量名称或方法名) 这个语法的使用 '''
print(page)
Python中的面向对象
面向对象的引入
人推杯子,杯子调到地上碎了
例子中存在的对象(简单版):人,杯子,桌子
对象的属性:人(性别,年龄,身高。。) 人可以完成的操作( 推,拿。。)
杯子 (材质,容积,产地,完整,破损。。)杯子的操作( 掉落,,)
桌子(高度,材质,颜色。。)
封装起来—同一个对象之间有一定的关联
常见的几个关联关系:
UML 中:
聚合(aggregation)是关联关系的特例,是强的关联关系,聚合是整个与个体的关系,即has-a关系,此时整体和部分是可以分离的,他们具有各自的生命周期,部分可以属于多个对象,也可以被多个对象共享;
如:开发者-管理者
**组合/复合(compostion)**也是关联关系的一种特例,体现的是一种contain-a关系,比聚合更强,是一种强聚合关系。它同样体现整体与部分的关系,但此时整体与部分是不可分的,整体生命周期的结束也意味着部分生命周期的结束
如:衣领-袖口 (缺少一个就没有办法独立存在)
依赖(dependency):依赖关系作为类与类之间关系的一种,代表的是一个类依赖于另一个类的实现,这种关系的方向是单向的,即类B的变化会影响到类A,反过来则不成立,表现为类B作为参数被类A的方法调用。
如:驾驶员-车
继承(或叫泛化):指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系
如:驾驶员-乘客(都可以继承People这个父类)
- 可以用一个字典表
- 用一个列表的方式关联
实现面向对象的几个步骤
OOA 面向对象的分析
向上面一样对一个对象进行分析
OOD 面向对象设计
按照对象的各个特性,抽象对象成一个类的操作
OOP 面向对象的编程
具体的实现面向对象的代码化操作
-
完整的定义一个book的类,在类中可能存在很多应该定义的属性
-
‘init() 方法来定义函数有什么,用有动词的函数来定义可以做什么’’’**
class Book:
'''init() 方法来定义函数有什么'''
def __init__(self,title,price,author,publish):
self.title = title
self.price=price
self.author=author
self.publish=publish
'''当前的标题以及内容,用self来引用'''
def printMsg(self):
print(self.title)
print(self.publish)
print(self.author)
print(self.price)
print(self.author)
'''实例化对象,用构造函数的方法'''
'''在传参中不需要传入self的参数值'''
book = Book('Python入门',100.00,'Tommy','清华大学出版社')
print(book.printMsg())