0-1 类对象 - 类属性 0-2 类方法 定义格式: @classmethod def 方法名(cls,...): pass 调用格式: 类对象.类方法名 注意: 在类方法中,不能使用self 但是可以使用 cls,该参数用来表示 当前类对象,这个参数也是自动传递的\ 应用场景: 一般在设计类时,如果有类方法,该类一般不会去实例对象,直接使用类对象来操作(比如:数学函数类) 一役用来定义工具类使用 Math.max(1,2) 0-3 静态方法 格式: @staticmethod def 方法名(参数列表....): pass 调用方式: 同类方法 类对象.静态方法名() 设计目的: 静态方法实际上就是放到类当中的一堆普通函数 作用: 静态方法同类方法相似,也是在不需要实例对象产生的条件下,可以使用静态方法来实现 一般这两种方法,都是用在工具类的实现上. 通过类,将一系列的功能方法进行整合到一起. # 实例方法,必须通过实例对象调用执行,(第一个参数是当前调用该方法的实例) # 类方法, 当不需要产生实例对象时,可以使用类方法来实现相应的代码功能,类方法可以直接 使用类对象来调用,类方法的第一个参数是 cls,用来接收当前类对象,通过个参数, 可以各个类方法中进行共享数据 # 静态方法, 作用同类方法相似,但是静态方法不接收任何默认参数(实例对象或类对象),静态方法 其实就是将一些相关联的普通方法使用类进行整合. 类方法和静态方法,一般在使用时,大多数用来实现工具类. 1. 模块介绍 在Python中,一个.py文件就是一个模块 在Python,万物皆对象,模块也不例外 通过模块,可以有效的组织代码结构,让代码结构更加清晰 但是,初期可能让大家逻辑上更加混乱 2. 导入模块 导入模块是指: 在一个.py文件中,使用另外一个.py文件时,需要将这个文件导入 在一个模块中,使用另外一个模块时,需要将这个模块导入 import os import time import random import sys import functools 方式一: import 模块名 (掌握) 方式二: from 模块名 import 成员名 (掌握) 特例: from 模块名 import * (掌握) 别名: import 模块名 as 别名 from 模块名 import 成员名 as 成员别名 两种导入方式区别: 1.import方式,是拿到了模块对象的引用地址,通过这个地址来使用模块中的成员 2.from-import方式,相当于将被导入模块中的成员,复制了一份到本地模块中.所以可以直接使用成员来访问被导入的成员 3.对于 import 方式来说,没有任何限制 4.对于from-import方式来说,有些成员是不能被导入的(有权限限制) 3. __all__ __all__ 是一个魔法属性,类型是一个列表,元素是字符串类型 作用: 可以改变在使用 from-import 方式导入模块时,成员的导入规则 3.1 from-import 在导入时,会产生命名冲突问题 在程序中最后的定后会起作用 4. 模块导入的搜索顺序(了解) 模块的分类: 1.自定义模块 2.系统模块 3.第三方模块 查找顺序: 1. 当前程序所在目录 2. 在当前程序所在工程的根目录 3. PYTHONPATH 4. 系统目录 5. site_packages 第三方模块的安装目录 __name__ (掌握) 作用: 如果__name__ 出现在当前执行的模块中时,得到的值是 __main__ 这个字符串,用来表示执行的是当前文件 如果__name__ 出现在在了被导入模块中时,得到的值是被导入模块的模块名 5. 包 包:就是一个文件夹 区别: 在python3以前,包中是有一个文件 __init__.py ,没有该文件的就是一个普通 的文件夹,有该文件才是包 在python3以后,不管有没有,都认为是一个包 6. 导入包中的模块 方式一: 通过包和模块的路径,明确的告诉解释器,要导入哪个包里的哪个模块 import 包名.模块名 from 包名 import 模块名 from 包名.模块名 import 成员名 方式二: import 包名 from 包名 import * 在导入时,不会指定模块名,只指定包名 这时,默认情况下(__init__.py 为空)哪个模块都不会导入 为了能让模块正常导入,这里需要 __init__.py 文件中设置可以被导入的模块 通过方式: from . import 模块名 注意: __all__ 只对 from 包名 import * 方法生效,对 import 包名 方式无效 __all__ 在 __init__.py 文件中的使用了解即可 如果包有很多层级的情况: www.itcast.cn cn itcast python java c++ from cn.itcast.python import database www.itcast.cn cn itcast web a.py b.py c.py spider a.py b.py c.py # 小结模块导入: 1. 导入模块: 两种方式 import 包名.模块名 -> 包名.模块名.成员 from 包名.模块名 import 成员名 -> 直接使用成员 from 包名 import 模块名 -> 模块名.成员 from 包名.模块名 import * -> 直接使用成员 2. __all__ 这个魔法属性,会影响 from - import * 这种导入方式的模块 在all 中指定的模块或成员会被导入,没有指定的不会被导入 3. 了解模块导入时的搜索路径 sys模块中的path变量中保存了搜索路径 a. 当前程序所在同级目录 b. 当前程序所在工程的根目录 c. PYTHONPATH 环境变量中设置的目录 d. 系统目录 e. site-packages 这个第三方模块安装目录 4. 包 包就是一个文件夹 包和普通文件夹的功能在于 包中有一个 __init__.py 文件 该文件的作用是在只导入包时,指定可以导入的模块有哪些 如果这个文件是空的,那么在导入这个包时,不会导入任何模块 在指定可以导入的模块时, 可以使用 from . import 可导入模块名