目录
类名
通常是大写开头
class MyClass(object)
括号里的表示这个类从object继承而来,可以有多个
类方法必须有一个参数是self
构造函数
__init__(self,argv)
类的属性
属性有两种,一种是实例属性(对象属性),另一种是类属性。
实例属性一般是在构造函数中定义的,定义时以self作为前缀
在类外面,可以增加类属性,也可以修改实例属性。
属性名以__(双下划线)开头则是私有属性,否则是公有属性。
访问私有属性的方式:对象名._类名+私有属性名。正规的方式是定义set get方法来更新或者修改。
所以说,在python里没有真正意义上的私有属性。
类的方法
从外在表现看,类有3种方法:普通方法、classmethod方法和staticmethod方法。
__开头的是私有方法,在类内部调用
class Foo(object):
def __init__(self):
self.bar = "baz"
def func1(self):
print("called func1")
def func2():
print("called func2")
@classmethod
def func3(cls):
print("called func3")
def func4(self, x):
print("called func4 with value:", x)
@staticmethod
def func5(cls):
print("called func5 with args:", cls)
@staticmethod
def func6():
print("called func6")
fooObj = Foo()
print(fooObj.bar)
fooObj.func1() #默认第一个参数是self,不需要显式指定 按照惯例,实例方法的第一个参数是self,代表调用该方法的对象;
#func2 是类方法
Foo.func2() # 无任何参数的,使用类名调用类方法,而不是实例名
#fooObj.func2() # 报错,无法使用实例名调用类方法,因为类方法第一个参数是cls,代表调用该方法的类,而不是实例
#@classmethod 修饰符,用于将一个类方法绑定到类本身上,可以类名调用,也可以实例名调用
Foo.func3() # 使用类名调用类方法,而不是实例名
fooObj.func3() # 使用实例名调用实例方法
fooObj.func4(10) # 使用实例名调用实例方法,并传入参数
#@staticmethod 修饰符,用于将一个静态方法绑定到类本身上,可以类名调用,也可以实例名调用
Foo.func5(10)
Foo.func6()
fooObj.func5(10)
fooObj.func6()
面向对象的三大特征
封装
权限控制
单下划线开头:protected,被视为仅供内部使用,允许类本身和子类访问
双下划线开头:private,允许类本身访问
首尾双下划线:一般表示特殊方法
这种约定并不能完全做到权限的控制 可以通过 dir(实例名)查看所有属性和方法的实际名称
属性设置
@property @propertyName.setter
class Student(): def __init__(self, name, score): self.name = name self.score = score self.__gender = 'male' @property def gender(self): return self.__gender @gender.setter def gender(self, value): if value not in ['male', 'female']: raise ValueError('Gender must be male or female') self.__gender = value
继承
在Python中一个子类可以继承N个父类
一个父类可以拥有多个子类
如果没有继承任何类,默认继承的是object类
class 类名(父类1,父类2,...)
方法重写
子类方法名和父类方法名一致,可以通过supper().父方法名调用父类方法
多态
Python中的多态只关心对象行为,不关心是否继承(这与Java不同,只要对象方法名一致就可以构成多态
运算符重载
索引
索引迭代 __getitem__
__iter__
__next__
Object类
所有类直接或者间接父类
所有类都拥有object类的属性和方法
特殊方法 __new__() __init__() __str__()
对象的特殊方法和特殊属性
每个数学操作都有对应的方法 : + __sub__
属性:
__dict__ 对象属性字典
__base__对象父类第一个
__bases__对象所有父类的元组
构造方法
python在创建对象时,首先调用特殊方法__new__(),之后再调用__init__()进行初始化。如果没有自己的new方法,python会自动调用object.__new__()。 new相当于申请对象空间。
析构方法
__del__
其它特殊方法
__str__
print(实例名)会调用这个方法
命名元组 namedtuple
from collections import nuamedtuple
class1 = namedtuple('Popint',['x','y'])
相当于定义了Point类:
class Point:
def __init__(self,x,y):
self.x=x
self.y=y
def __str__(self)
return '%d,%d'%(self.x,self.y)
常用内置模块
random
time
datetime
第三方模块的安装与卸载
pip install 模块名称
pip uninstall模块名称
python -m pip install --upgrade pip #升级pip
处理Excel文件的第三方库
1.Pandas:
pandas
是一个强大的数据分析和处理库,提供了丰富的数据操作功能,包括读取和写入 Excel 文件。- 支持
.xls
和.xlsx
文件的读写。 - 可以指定读取特定的工作表、列和行,支持数据清洗和数据聚合等功能。
- 与
NumPy
、Matplotlib
等库无缝集成,适合进行数据分析和可视化
2. openpyxl
openpyxl
是一个用于读取和编写 Excel 2010.xlsx
文件的库。- 支持
.xlsx
文件的读写和 Excel 操作。 - 提供了
read_only
和write_only
模式,优化大文件的读写性能
pdfplumber模块
用于处理pdf文件
Numpy模块
数据分析,用于处理数组、矩阵等数据
Pandas与Matplotlib
Pandas是Numpy的扩展,matplotlib.pyplot可以非常方便的绘制各种图。
PyEcharts
jieba模块
jieba
是一个用于中文分词的 Python 第三方库,它支持中文文本的精确模式和搜索引擎模式分词,支持繁体分词和词性标注。以下是 jieba
模块的一些主要功能和使用方法:
主要功能
- 精确模式:将句子最精确地切分成词语。
- 搜索引擎模式:适合用于搜索引擎构建索引,支持最大概率分词。
- 词性标注:标注每个词语的词性。
- 调整词典:可以自定义词典,调整词语的权重。
- 关键词提取:基于 TF-IDF 算法和多种文本相似度算法的关键词提取。
- 自定义词典:可以加载自定义词典,调整分词结果。