al+大数据每日学习笔记8 📅 2026/7/22 4:02:13 2026年7月21日星期二今天是我学习的第八天学习了python的面向对象。主要内容1.面向对象面向对象是一种编程思想把程序看作一组对象的交互不再单纯用函数、变量分步执行面向过程。现实里一切事物都可以抽象成「对象」比如学生、手机、汽车。2.成员变量类的定义语法格式class 类名称 class关键字表示要定义类类的属性 类的属性即定义在类中的变量成员变量类的行为 类的行为即定义在类中的函数成员方法创建类对象语法对象名 类名()类 属性数据 行为函数成员变量和成员方法class Student:# 属性name 张三age 18# 行为def say_hi(self):print(大家好我叫张三)可以看出类中不仅可以定义属性用来记录数据类中还可以定义函数来记录行为其中类中定义的属性变量称之为成员变量类中定义的行为函数称之为成员方法成员方法的定义语法在类中定义成员方法和定义函数基本一致但仍然有细微区别语法格式def 方法名(self,形参1,......形参N):方法体可以看到在方法定义的参数列表中有一个self关键字self关键字是成员方法定义时必须填写的1它是用来表示类对象自身的意思2当我们使用类对象调用方法时self会自动被Python传入3在方法内部想要访问的成员变量必须使用self注self关键字尽管在参数列表中但是传参的时候可以忽略它。3.类和对象基于类创建对象的语法对象名 类名()类只是一种程序内的 设计图纸需要基于图纸生产实体对象才能正常工作这这套路称之为面向对象编程。4.python构造方法构造方法Python类使用__init__()称之为构造方法可以实现在创建类对象构造类的时候会自动执行。在创建类对象构造类的时候将传入参数自动传递给__init__()方法使用。注1、构造方法名__init__ 千万不要忘记前后2个下划线2、构造方法也是成员方法不要忘记在参数类表中提供self关键字。5.python内置方法魔术方法这些内置方法各自有各自特殊的功能称之为魔术方法 __init__ 构造方法是python类内置的方法之一。 常用魔术方法 __init__() 构造方法 __str__() 字符串方法 __lt__() 小于符号比较 __gt__()大于符号比较 __le__() 小于等于符号比较 __ge__() 大于等于符号比较 __eq__() 符号的比较 __eq__()魔法方法就必须提到Python中的is和。先来看看这两者的区别 is 比较两个对象的 id 值是否相等是否指向同一个内存地址 比较的是两个对象的内容是否相等即内存地址可以不一样内容一样就可以了。 在比较类时会默认调用object.__eq__方法默认比较两个对象的地址id object.__lt__(self, other) object.__le__(self, other) object.__eq__(self, other) ! object.__ne__(self, other) object.__ge__(self, other) object.__gt__(self, other)6.封装基于模板类去创建实体对象使用对象完成功能开发。封装表示的是将现实世界的事物的1、属性2、行为封装到类中描述为1、成员变量2、成员方法从而完成程序对现实世界事物的描述。对用户隐藏的属性和行为现实世界的事物有属性和行为但是不代表这些属性和行为都是开放给用户使用的。私有成员既然现实世界的事物有不公开的属性和行为那么作为现实世界事物在程序中映射的类也应该支持。类中提供了私有成员的形式来支持。1、私有成员变量2、私有成员方法定义私有成员的方法1、私有成员变量变量名以 __开头2、私有成员方法方法名以 __开头使用私有成员私有成员无法被类对象使用但是可以被其他的成员使用。7.继承继承分类单继承和多继承继承表示将从父类那里继承复制来成员变量和成员方法不含私有单继承语法class 类名(父类名):类内容体多继承Pthon中类之间也支持多继承即一个类可以继承多个父类。语法class 类名(父类名1,父类名2,....):类内容体复写和使用父类成员复写子类继承父类的成员属性和成员方法后如果对其“不满意”那么可以进行复写。即在子类中重新定义同名的属性和方法即可。调用父类同名成员一旦复写父类成员那么类对象调用成员的时候就会调用复写后的新成员如果需要使用被复写的父类成员需要特殊的调用方式方式1调用父类成员使用成员变量父类名.成员变量使用成员方法父类名.成员方法(self)方式2调用父类成员使用成员变量super().成员变量使用成员方法super().成员方法()注只能在子类内部调用父类的同名成员。子类的类对象直接调用会调用子类复写的成员。8.类型注解类型注解在代码中涉及数据交互的地方提供数据类型的注解显式说明。功能帮助第三方IDE工具Pycharm对代码进行类型推断协作做代码提示帮助开发者自身对变量进行类型注解。语法(1)、为变量设置类型注解语法 变量:类型除了使用变量:类型这种语法做注解外也可以在注释中进行类型注解语法type:类型类型注解主要功能在于1、帮助第三方IDE工具对代码进行类型推断,协助做代码提示2、帮助开发者自身对变量类型注解备注类型注解并不会真正对类型做验证和判断。也就是类型注解仅仅是提示性的不是决定性的。(2)、函数方法的类型注解函数和方法的形参类型注解语法def 函数方法名(形参名:类型,形参名:类型,....)pass函数和方法的返回值类型注解语法def 函数方法名(形参名:类型,形参名:类型,....) - 返回值类型pass(3、Union类型语法Union[类型,....,类型]可以定义联合类型注解注Union联合类型注解在变量中、函数、方法中、形参列表、返回值中均可使用。9.多态多态多种状态即完成某个行为时使用不同的对象会得到不同的状态。 同样的行为函数/方法传入不同的对象得到不同的状态。 多态常作用于在继承关系上 1、函数方法形参声明接收父类对象 2、实际传入父类的子类对象进行工作 即 1、以父类做定义声明。 2、以子类做实际工作。 3、用以获得同一行为不同状态。 抽象类接口 观察发现父类Animal的speak方法是空实现的每个动物叫声都不同 这种设计的含义是 1、父类用来确定有哪些方法 2、具体方法实现由子类自行决定 这种写法就叫抽象类也称之为接口 抽象类含有抽象方法的类称之为抽象类 抽象方法方法体是空实现的pass称之为抽象方法10.正则表达式正则表达式是一个特殊的字符序列它能帮助你方便的检查一个字符串是否与某种模式匹配。 re模块 正则的三个基础方法 python正则表达式使用re模块并基于re模块中的三个基础方法来做匹配。1、match语法格式re.match(匹配规则,被匹配的字符串) 从被匹配字符串开头进行匹配匹配成功返回匹配对象包含匹配的信息匹配不成功返回空。2、search语法格式re.search(匹配规则,被匹配的字符串) 搜索整个字符串找出匹配的。从前向后找到第一个后就停止不会继续向后。3、findall语法格式re.findall(匹配规则,被匹配的字符串) 匹配整个字符串找出全部匹配项最终返回的是一个列表对象如果找不到则返回[]。