模块就像字典
字典是python中唯一映射关系,它用一个事物对应另外一个事物,也就是所谓的key->value。
模块包含一些变量和函数,可以导入,并且可以用点(·)来操作访问变量和函数。
记住‘从X获取Y的概念’。
他们相似,只是语法不同。
1.也就是说在python中有一条通用的模式:
(1)有一个key =value的容器
(2)通过key从容器中获取数据
不同点:
在字典中key是字符串,写法为[key];在模块中写法为.key,其余的地方一模一样。
类就像模块
可以认为模块就是python的特殊字典,然后可以用点(·)操作符来访问它。
类(class)是组织一系列的函数和数据并将它们放在一个容器里面,同样可以用点(·)操作符来访问它们。
使用类可以创造出很多个类似基类的类别,而模块一但导入了整个项目有且只有一个模块
对象就像导入
如果类像模块,那么应该也有一个类似import的概念。在类中这个概念被称为实例化,当一个类被实例化,就得到了一个类的对象了。
创建一个类;
class Mystuff(object):
def __init__(self ):
self.a = 'How are you?'
def apple(self):
print("I am classy apple ")
b = Mystuff()#类的实例化
b.apple()#调用类的方法
print b.a#打印类的属性
分析下类的实例化这一句话其实python内部给我们做了很多事情:
python查找Mystuff()类确认是被定义过
--->python创造一个新对象,其中包含Mystuff()中定义的所有函数
--->python查找Mystuff()类中是否定义__init__()函数,如果有就初始化这个空对象
--->Mystuff()类中的__init__()方法一个self参数,它就是我们创建的空对象,可以在上面设置变量
--->给self.a(空对象)的变量设置参数,初始化这个对象
--->截止目前python可以使用这个空对象了,然后把他赋值给变量b
注:类---------->对象
这个过程(也可以称为类的实例化)是通过类来创建对象,这个对象就是类的一个实例,也叫实例对象。
python类中属性的引用
python中属性的引用是由外而内的,当你创建一个类的实例时,准备开始引用属性,这个时候编译器会搜索实例是否拥有属性,如果有就引用,如果没有就会搜索这个实例所属类是否有属性,有就引用,没有就报错。