对象的理解
对象的特征
封装
信息隐蔽技术,例如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 新名字 #别名的方式可能在命名空间上最合适
模块的路径
def__init__方法是Python类中的一个无法绕开的方法。它相当于面向对象方法中的 C++ 构造函数
当你创建一个类的新对象时,Python 会自动将你的参数传递给 __init__方法并调用它来初始化对象的属性
__init__方法让类初始化对象的属性,没有其他作用,它只在类中使用
if __name__ == ‘__main__’ #测试使用,这是主函数
一个python文件通常有两种使用方法,
第一是作为脚本直接执行
第二是 import 到其他的 python 脚本中被调用(模块重用)执行
因此 if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程
if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的
搜索路径 #import sys命令用于查询模块默认可导入的路径,它是一个列表,因此可以通过sys.path.append导入指定模块路径
包(package)
1、创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字;
2、在文件夹中创建一个__init__.py的模块文件,内容可以为空;
3、将相关的模块放入文件夹中
本文摘自 :https://blog.51cto.com/l