python是面向对象的语言!!!!
举个例子来说明什么是面向对象:
所有的人都能抽象成一个类(class),类有类名(人类),有类变量或者属性(听力上限下限等),有类方法(吃,喝等)。每一个人都可以称之为人类这一个类的实例化或者对象,每一个人都拥有人类这个类的属性和方法(可能有所改变,比如每个人的听力范围不一样,每个人爱吃的东西不一样),但是根据自身又有独特的属性和方法(每个人的名字,身高,体重不一样,每个人擅长干的事不一样)。
类:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
方法:类中定义的函数。
实例化:创建一个类的实例,类的具体对象。
实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
包和模块
模块是一个文件
多个模块+__init__.py
形成一个包
__init__.py
是模块包标志, 当import 本模块包的时候会自动调用__init__.py
中的内容
查看内置模块
import sys
sys.builtin_module_names
查看已安装包 (pypi.python.org)
pip list
pip install --upgrade 包名
pip uninstall 包名
pip install 包名
查看包的帮助文档
help(len)
?len #查看docstring
??len # 查看源代码
len.__doc__ # 查看简单描述
dir(len) # 查看某个对象所支持的属性清单
类
private __
protected _
类的继承
子类可以继承父类的protected方法和属性,但是不能继承父类的private 方法和属性
类中的方法
分为实例方法、类方法、静态方法
init 执行后生成的是实例
new 执行 后生成的是对象,return object.new(cls)之后执行__init__
del
实例方法的第一个参数必须是 self ,如果前面加上@property 则变成是以属性的方法调用
类方法在前面加上 @classmethod ,第一个参数必须是类的引用 cls
静态方法 前面加上@staticmethod 形参中没有cls, self, 甚至可以没有参数
魔术命令
ipython/jupyter提供的一些特殊命令
%lsmagic #查看所有的魔术命令
%run #运行.py文件
%timeit # 行模式 查看代码运行时间
%%timeit #cell模式 查看代码运行时间
%history # 查看历史输出结果
%xmode # 查看报错信息
%debug # 调试信息
%prun # 程序运行的逐行统计 ipython自带的
%lprun # 程勋运行的逐行统计
%memit # 内存使用情况统计