al+大数据每日学习笔记8
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(匹配规则,被匹配的字符串) 匹配整个字符串,找出全部匹配项,最终返回的是一个列表对象,如果找不到则返回[]。
更多推荐

所有评论(0)