- 初识对象
- 成员方法
- 类和对象
- 构造方法
- 其它内置方法
- 封装
- 继承
- 类型注解
- 多态
- 综合案例
初识对象
理解使用对象完成数据组织的思路
设计表格,称之为:设计类(class)
打印表格,称之为:创建对象
填写表格,称之为:对象属性赋值
"""
演示面向对象
"""
#1.设计一个类(类比生活中:设计一张登记表)
class Student:
name=None
gender=None
nation=None
native=None
age=None
#2.创建一个对象(类比生活中:打印一张登记表)
stu_1=Student()
#.对象属性进行赋值(类比生活中:填写表单)
stu_1.name="lkx"
stu_1.gender="男"
stu_1.nation="中国"
stu_1.native="福建省"
stu_1.age=18
#4.获取对象中记录的信息
print(stu_1.name)
print(stu_1.gender)
print(stu_1.nation)
print(stu_1.native)
print(stu_1.age)
成员方法
掌握类的定义和使用语法
class是关键字,表示要定义类了
类的属性,即定义在类中的变量(成员变量)
类的行为,即定义在类中的函数(成员方法)
类中定义的属性(变量),我们称之为:成员变量
类中定义的行为(函数),我们称之为:成员方法
掌握成员方法的使用
可以看到,在方法定义的参数列表中,有一个:self关键字self关键字是成员方法定义的时候,必须填写的。
它用来表示类对象自身的意思
当我们使用类对象调用方法的是,self会自动被python传入在方法内部,想要访问类的成员变量,必须使用self
掌握self关键字的作用
成员属性分为:成员变量和成员方法(函数)
想要访问成员属性必须使用Self,外部传可以直接使用(msg)
类和对象、
掌握使用类描述现实世界事物的思想
掌握类和对象的关系2.
类是程序中的“设计图纸
对象是基于图纸生产的具体实体
理解什么是面向对象3.
"""
类的操作和对象的关系
"""
#设计一个闹钟类
class naozhong:
id=None
price=None
def xingdong(self):
import winsound
winsound.Beep(2000,3000)
#构建2个闹钟对象并让其工作
naozhong1=naozhong()
naozhong1.id="0011"
naozhong1.price="1222"
print(f"闹钟的ID是:{naozhong1.id},价格是{naozhong1.price}")
naozhong1.xingdong()
面向对象编程就是,使用对象进行编程即,设计类,基于类创建对象,并使用对象来完成具体的工作
构造方法
Python类可以使用:可以实现:
__init__ ()方法,称之为构造方法。
在创建类对象(构造类)的时候,会自动执行
在创建类对象(构造类)的时候,将传入参数自动传递给 init 方法使用
"""
演示构造对象
"""
#演示使用构造方法对成员变量进行赋值
class test:
name=None
age=None
tel=None
# 构造方法的名称:
def __init__(self,name,age,tel):
self.name=name
self.age=age
self.tel=tel
print(f"test创建了一个类对象")
test1=test("lkx",12,"111111")
print(test1.name)
print(test1.age)
print(test1.tel)
注意事项 :
构造方法不要忘记self关键字
在方法内使用成员变量需要使用self
其它内置方法
上文学习的 __init__ 构造方法,是Python类内置的方法之一这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称之为:魔术方法
掌握几种常用的类内置方法:
我们可以通过 __str__ 方法,控制类转换为字符串的行为
方法名__str__
返回值:字符串
内容:自行定义
__lt__lt_小于符号比较方法
方法名传入参数:other,
另一个类对象返 回 值:True 或 False
内容:自行定义
魔术方法:__ le__ 可用于:<=、>=两种比较运算符上。
方法名:le_传入参数:other,
另一个类对象返 回 值:True 或 False
内容:自行定义
eq_,比较运算符实现方法
方法名__eq__传入参数:other,另一个类对象
返 回 值:True 或 False
内容:自行定义
"""
演示魔术方法
"""
class test:
def __init__(self,name,age):
self.name=name
self.age=age
#-_str__魔术方法
def __str__(self):
return f"test的类对象,name:{self.name},age:{self.age}"
#__lt__魔术方法
def __lt__(self, other):
return self.age<other.age
#__le__魔术方法
def __le__(self, other):
return self.age<=other.age
#__eq__魔术方法
def __eq__(self, other):
return self.age==other.age
test1=test("lkx",666)
test2=test("kx",366)
print(test1<test2)
print(test1>test2)
print(test1<=test2)
print(test1>=test2)
print(test1==test2)
print(test1==test2)
print(test1)
print(str(test1))
封装
理解封装的概念:把现实中的事物封装成程 序语言中的类
掌握私有成员的使用
类中提供了私有成员的形式来支持。
私有成员变量
私有成员方法
在类中提供仅供内部使用的属性和方法
而不对外开放(类对象无法使用)
定义私有成员的方式非常简单,只需要私有成员变量:变量名以开头(2个下划线)私有成员方法:方法名以 开头(2个下划线)即可完成私有成员的设置
"""
演示私有成员对象显示
"""
#定义一个类,内含私有成员变量和私有成员方法
class phone:
__current_voltage=None
def __keep_single_core(self):
print("CPU 单核")
def by_5g(self):
if self.__current_voltage >= 1:
print("开启")
else:
self.__keep_single_core()
print("电量不足")
phone1=phone()
phone1.by_5g()
报错了 ,简单看下简单逻辑
继承
继承的基础语法
理解继承的概念:在老的形式上进行修改
继承分为:单继承和多继承
使用如图语法,可以完成类的单继承。继承表示:将从父类那里继承(复制)来成员变量和成员方法(不含私有)
Python的类之间也支持多继承,即一个类,可以继承多个父类
多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级。即:先继承的保留,后继承的被覆盖
掌握继承的使用方式
"""
演示继承
"""
# 演示单继承
class phone:
id = None
tel = "1111"
def calw(self):
print("4g通话")
# class phone2024(phone):
# face_id = "111"
#
# def by_5g(self):
# print("新功能")
#
#
# phone = phone2024()
# print(phone.tel)
# phone.by_5g()
# phone.calw()
# phone.face_id
# 演示多继承
class nfc_a:
NFc_aa = "第五代"
teet = "aaa"
def read(self):
print("读卡")
def write(self):
print("写卡")
class blue:
blueaa = "aa"
tooth = 22
def blue(self):
print("蓝牙")
def typeaaa(self):
print("开启")
class myphone(phone, nfc_a, blue):
pass
phone = myphone()
phone.blue()
phone.write()
# 演示多继承下,父类成员名一致的场景
掌握pass关键字的作用:补全语法
复写和使用父类成员
掌握复写父类成员的语法
子类继承父类的成员属性和成员方法后,如果对其“不满意”,那么可以进行复写即:在子类中重新定义同名的属性或方法即可。
掌握如何在子类中调用父类成员
一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员如果需要使用被复写的父类的成员,需要特殊的调用方式:
"""
演示复写父类
"""
class phone:
id = None
tel = "1111"
def calw(self):
print("4g通话")
#定义子类,复写父类成员
class myPhone(phone):
id="lkx"
tel = "777"
def calw(self):
print("5g通话")
phone=myPhone()
phone.calw()
print(phone.id)
#在子类中,调用父类成员
类型注解
变量的类型注解
理解为什么使用类型注解
Python在3.5版本的时候引入了类型注解,以方便静态类型检查工具,IDE等第三方工具。
类型注解:在代码中涉及数据交互的地方,提供数据类型的注解(显式的说明)。
帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示帮助开发者自身对变量进行类型注释
掌握变量的类型注解语法
类型注释的语法:
自动导包:包名字+ ALT+回车
什么时候要注解:一般,无法直接看出变量类型之时会 添加变量的类型注解
函数(方法)的类型注解
掌握为函数(方法)形参进行类型注解
掌握为函数(方法)返回值进行类型注解
Union类型
理解Union类型
首先导包
语法格式Union【类型,。。。。类型】
多态
理解多态的概念
多态常作用在继承关系上.
以父类做定义声明
以子类做实际工作
用以获得同一行为,不同状态
多态,指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。
理解抽象类(接口)的编程思想
同样的行为(函数),传入不同的对象,得到不同的状态
抽象类:含有抽象方法的类称之为抽象类
抽象方法:方法体是空实现的(pass)称之为抽象方法
3.抽象类的作用
多用于做顶层设计(设计标准),以便子类做具体实现。也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法
综合案例
使用面向对象思想完成数据读取和处理
基于面向对象思想重新认知第三方库使用(PyEcharts)
太累了后面补了