模块,包,变量
模块
√模块(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__() 之类的。