模块,包,变量

模块

√模块(module):是一个 Python 文件,以.py 结尾,包含了 Python 函数等语
句。先导入,再使用,用模块.函数名调用。
import time
time.asctime ( )
输出:‘Tue Jan 16 21:51:06 2018’

√包:包含有多个模块 from PIL import Image

变量作用域

局部变量:在函数中定义的变量,只在函数中存在,函数执行结束不可再用。
全局变量,在函数前定义的变量,一般在整个代码最前面定义,全局可用。

类、对象和面向对象的编程

√1、类(class):

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。物以类聚人以群分,类 是可实例化出对象的模具。

√2、实例化:

对象 = 类 () t = turtle.Pen()

√3、对象:

是类实例化出的实体,对象实实在在存在,完成具体工作。

√4、面向对象:

程序员反复修改优化类,类实例化出对象,对象调用类里的函
数执行具体的操作。

在上图中,有动物、哺乳动物和猫。 动物是一个类,他们具有共同的功能:呼吸、移动和吃东西。乳动物也是一个类,他们是动物类里的子类,是在动物类的基础上多了喂奶的功能。猫是哺乳动物类的一个子类,猫类在哺乳动物的基础上多了捉老鼠的功能。类命名时第一个字母常大写,比如 Animals、Mammals 和 Cats 的首字母都大写了。这些类的右侧列出了每个类具有的功能:比如呼吸、移动和吃东西是动物这个类具备的功能,在计算机中用函数的形式表示。喂奶是哺乳动物的功能,是哺乳动物这个类里的函数。捉老鼠是猫类具有的功能,是猫类的函数。

√上面的类是下面类的父类;下面类是上面类的子类
√子类实例化出来的对象,可以使用自身和父类的函数与变量

√5、类的定义:

class 类名 (父类名) : pass
如果有父类,写在类名后面的括号里;如果没有父类,可以不写括号了。用关
键词 pass 占个位置,之后再用具体函数把类补充完整。

举例:class Animals:
pass
class Mammals(Animals):
pass
class Cats(Mammals):
pass

√6、类里定义函数时,语法规定第一个参数必须是 self 。
√7、 init函数,

    在新对象实例化时会自动运行,用于给新对象赋初值。

    (1)将猫类实例化出一个叫 kitty 的对象,kitty 有自己的特征属性,比如身上有 10 个斑点:
    kitty = Cats(10) #实例化时运行__init__函数,给 spots 赋值,告知 kitty 有 10 个斑点print ”kitty.spots” #打印出 10
    (2)kitty 可以做具体的工作,比如捉老鼠:kitty.catch_mouse() #对象运行函数,必须用对象.函数名,调用类里的函数 #会运行 print ”catch mouse” 故打印出 catch mouse

    √8、对象调用类里的函数,用对象.函数名;

    √9、对象调用类里的变量,用对象.变量名。

    √10、类内定义函数时,

    如调用自身或父类的函数与变量,须用 self.引导,
    应写为 self.函数名或 self.变量名。

    代码验证:

    补充:
    Python 中虽然没有访问控制的关键字,例如 private、protected 等等。但 是,在 Python 编码中,有一些约定来进行访问控制。 单下划线、双下划线、头尾双下划线说明: _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能 允许其本身与子类进行访问,不能用于 from module import * foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类 本身进行访问了。 foo: 头尾双下划线定义的是特列方法,类似 init__() 之类的。