对象的理解
对象的特征
封装
信息隐蔽技术,例如BIF功能List我们可以执行append、sort等,但是我们不知道里面实现的逻辑,这叫做封装
继承
子类自动共享父类之间数据和方法的机制,如果子类中定义父类同名的方法或属性,则会自动覆盖父类对应的方法或属性
class A(list):
pass
B = A() #
B.append(1);B.append(2);B.append(3)
print(B)
打印结果:
[1, 2, 3] #B继承了A列表对应的内部函数功能
class B(A) #A是父类,意味class B继承了父类功能
pass
多态
调用同样的函数名,实现不一样的功能
class A:
def fun(self):
print('我是小A')
class B:
def fun(self):
print('我是小B')
a = A();b = B()
print(a.fun(),b.fun())
打印结果:
我是小A
我是小B
面向对象
- OOA面向对象分析
- OOD面向对象设计
- OOP面向对象编程
面向对象有两个重要概念,类(class)和实例(instance),类是抽象的模板,实例是根据类创建出来的一个个具体的“对象”
Python严格要求方法需要有实例才能被调用,这种限制其实就是Python所谓的绑定概念。
创建类
class Myclass(object): #pythong公约,类的第一个字母大写
pass
创建实例A
A = Myclass()
创建实例的时候,把我们认为必须绑定的属性强制填写进去,self、__init__ ,例如在Student类时,把name、score等属性绑上去
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
模块的理解
- 容器:对数据的封装,例如列表、元组、字符串、字典等
- 函数:对语句的封装
- 类:对方法和属性的封装,就是对函数和容器的封装
- 模块:每个保存的.py都是一个独立的模块,也就是程序
模块的引入
模块的作用将大的程序拆成小分支,易于测试和阅读;一段好的模块作为中间件反复被利用
引入方式:
第一种:import 模块名
第二种:from 模块名 import 函数名 #这个方法引用模块函数等不需要再加模块前缀
第三种:import 模块名 as 新名字 #别名的方式可能在命名空间上最合适
模块的路径
if __name__ == ‘__main__’ #测试使用
搜索路径 #import sys命令用于查询模块默认可导入的路径,它是一个列表,因此可以通过sys.path.append导入指定模块路径
包(package)
1、创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字;
2、在文件夹中创建一个__init__.py的模块文件,内容可以为空;
3、将相关的模块放入文件夹中