1.模块导入
将代码按照不同的功能拆分放到不同的.py文件中,每个.py文件就是一个模块。不同模块中的变量名可以相同,他们不会受影响。在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。
包是带有__init__.py文件的文件夹。包必须有__init__.py文件,不然他就是个文件夹。包是用来区分不同类型的模块,不同包中的模块名可以相同,他们不会相互受影响。包下可以还有包(子包),如同子文件夹
com/ 顶层包
__init__.py 初始化 com包
comtest.py com 下comtest模块
woodman/ com下的子包
__init__.py
woodtest.py
...
gif/ 图片处理包
__init__.py
gifecho.py
giftest.py 注意添加代码
...
modle/ modle子包
__init__.py
model.py
import... as...
import 模块路径.文件名 as 别名,当文件在当前目录下或PATH环境变量下,可以直接import 文件名,否则要从项目根目录下开始指定路径。如果要同时导入多个模块,只需要在模块名之前用逗号进行分隔:import module1,module2,module3....别名,直接引入文件名可以不用别名,如果带模块路径引入最好加上别名,使用时直接 【别名. 】使用
在用import语句导入模块时最好按照以下的顺序:
1、python 标准库模块 2、python 第三方模块 3、自定义模块
import math # 引入math模块,系统自带模块都在PATH下
import com.gif.gifecho as gif # 引入gifecho 模块
from ... import ...
from 模块路径.文件名 import 变量名\函数\类名
from com.gif.giftest import * # 引入giftest.py 下的全部
from com.gif.giftest import add # 只引入add函数
from com.gif.giftest import giftest # 只引入giftest类
深入模块http://www.runoob.com/python3/python3-module.html(以后补充)
2.面向对象
把程序看做不同的对象相互调用,是一种对具体事务的抽象模型。Python中一切都是对象。面向对象编程最基本特征是类和实例。类是用于定义抽象的对象模型,实例是根据类创建的对象。
类(Class): 用于定义抽象的对象模型,它是描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类属性(类变量):类属性在整个实例化的对象中是公用的。类属性定义在类中且在函数体方法之外。类属性通常不作为实例变量使用。
方法:类中定义的函数。
实例属性(实例变量):只做用于当前实例的变量属性。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
实例化:创建一个类的实例,类的具体对象。
实例:根据类定义的抽象模型创建出来的具体对象。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法,其实他就是实例。
数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。
class person(object):
address = '中国' # 类属性,没个实例的公共属性
def __init__(self, name, sex, age):
self.name = name # 实例属性
self.sex = sex # 实例属性
self.age = age # 实例属性
def dance(self): # 方法
print(self.name, '跳了一场舞')
hong = person('小红', '女', 18) # 实例化小红,将实例化的对象赋值给变量hong
ming = person('小明', '男', 26)
hua = person('小花', '女', 22)
类:根据共有特征定义一个类(抽象对象模型)<人>类的相同属性有姓名、性别、年龄实例:根据<人>类可以创建不同的人,如【小明】、【小红】等具有自己相应特征的人,【小明】、【小红】就是实例
类的私有属性:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
类的方法:在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
类的私有方法:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。