Python 类

目录

类名

构造函数 

类的属性

类的方法

面向对象的三大特征

封装

继承

多态

Object类

对象的特殊方法和特殊属性

构造方法

析构方法

其它特殊方法

命名元组 namedtuple

运算符重载

类的继承


类名

通常是大写开头

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 文件的读写。
  • 可以指定读取特定的工作表、列和行,支持数据清洗和数据聚合等功能。
  • 与 NumPyMatplotlib 等库无缝集成,适合进行数据分析和可视化

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 模块的一些主要功能和使用方法:

主要功能

  1. 精确模式:将句子最精确地切分成词语。
  2. 搜索引擎模式:适合用于搜索引擎构建索引,支持最大概率分词。
  3. 词性标注:标注每个词语的词性。
  4. 调整词典:可以自定义词典,调整词语的权重。
  5. 关键词提取:基于 TF-IDF 算法和多种文本相似度算法的关键词提取。
  6. 自定义词典:可以加载自定义词典,调整分词结果。
pyInstaller

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值