python第十次课 面向对象及案例

再再肝3天,整理了70个Python面向对象编程案例,怎能不收藏? 在 Python 中的方法中同时访问 cls 和 self。在 Python 中使用 print() 打印类的实例。Python 中带有 self 参数的类方法装饰器。使用给定的装饰器获取 Python 类的所有方法。在 Python 中创建多个传入参数列表的类变量。在 Python 中的另一个类中使用隐藏的装饰器。在 Python 中的一个函数上使用多个装饰器。获取在 Python 中修饰的给定类的所有方法。在 Python 中的类中将装饰器定义为方法。在 Python 中创建和使用静态类变量。 阅读详情

一、面向对象简介

概念:

  • 面向对象编程【简称:OOP】

开发程序模式

  • 面向过程:

    • 程序得开发过程是根据业务逻辑走【根据要求写语句】

    • 如何达成目标

  • 面向对象:

    • 程序得开发过程是围绕数据走

    • 操作将会影响谁

案例:打印tom、jerry、jack三个学员的信息,信息包括姓名、年龄、地址

# ================ 面向过程 ===================
# 定义第一个学员
stu1 = {
    "name":"tom",
    "age":"18",
    "addr":"hebei"
}
# 定义第一个学员
stu2 = {
    "name":"jerry",
    "age":"18",
    "addr":"tianjin"
}
# 定义第一个学员
stu3 = {
    "name":"jack",
    "age":"18",
    "addr":"beijing"
}

def showStu(**stuInfo):
    print("%s 的 年龄是 %s, 地址是%s"%(stuInfo["name"],stuInfo["age"],stuInfo["addr"]))

showStu(**stu1)
showStu(**stu2)
showStu(**stu3)

面试问题:你如何理解面向对象和面向过程

  • 面向过程主要是需要关注具体的过程

  • 面向对象主要是着眼点是如何达到最终效果


类

  • 这是一个抽象概念,统指一类事物,比如人、动物、狗

  • 类是无法直接使用,必须将类实例化一个对象以后,基于这个对象才能使用

实例化

  • 将一个抽象的类具体化到某一个具体的对象,这个过程实例化

对象

  • 实例化的结果就是对象

案例:

汽车         类
奥迪           类
奥迪a6       类
我的奥迪a6    对象


狗                  类
大黄狗               类
小伙家门口的哪个日本   对象


水果
苹果
我吃了一块的苹果   


灯             类
我家客厅灯      对象


面向对象编程的特点

  • 一切皆为对象,列表、字典、字符串、元组
    • 例如:列表就是一个对象,列表中的每个元素也都是对象

    • python就是一堆对象集合

  • 每个对象都是实例化的结果

  • 每一类对象都具有自己特定的属性和方法

# 列表是一个类

# 创建一个列表对象【类的实例化】
li1 = [1,2,3]

# 列表类的方法
li.pop()
li.append()

# 字符串是一个类

# 创建字符串对象
str1 = "123"

注意:所有的对象,都是由类生成的,类具有的方法,其所有生成的对象都会具有


类的组成

  • 类名

  • 类方法:

    • 类的方法其实就是类里面的函数

    • 方法其实就是能做的事情

  • 类属性:

    • 类的属性其实就是类里面的一个变量

    • 属性其实就是这一类事物具有的特点、特性

案例:以狗类为例

类名:狗
类属性:品种、性别、毛色、体重、身高、年龄
类方法:叫、咬、吃、喝、拉、撒、跑


面向对象的三个原则

  • 封装:

    • 隐藏具体的实现细节

  • 继承:

    • 子类会继承父类所有的属性和方法

    • 类

      • 上级类:父类、基类、超类

      • 下级类:子类、派生类

  • 多态:

    • 传递不同的数据,会返回不同的结果


2、面向对象简单实现

定义类的格式

# 定义经典类
class 类名():
    属性
    方法

# 定义新式类
class 类名(父类名):
    属性
    方法

说明

  • 函数名:第二个单词首字母大写

  • 类名:每个单词首字母大写

案例:

# 定义一个类
class StuInfo():
    # 定义属性
    age = "10"
    addr = "hebei"
    name = "tom"

    # 定义方法
    def showInfo(self):  # 类中的方法的第一个形参必须是self
        #print("%s的年龄是%s, 地址在%s"%(name, age, addr))     # 此时这三个变量是去全局段找
        print("%s的年龄是%s, 地址在%s"%(self.name, self.age, self.addr))   # 加上self是去类内部找变量

# 进行实例化,将实例化结果赋值给stu1变量
# stu1是一个对象
stu1 = StuInfo()

# 显示类属性
print(stu1.age)
print(stu1.addr)
print(stu1.name)

# 调用类方法
stu1.showInfo()

案例:

class Car():
    def Start(self):
        print("汽车启动...")

    def Run(self):
        print("汽车在行驶...")

    def Stop(self):
        print("汽车停止...")

myCar = Car()

myCar.Start()
myCar.Run()
myCar.Stop()


给类添加属性

# 定义一个类
class Car():
    # 定义一个属性
    speed = "30"

    # 定义一个方法
    def Start(self):
        print("汽车启动...")
    # 定义一个方法
    def Run(self):
        print("品牌是%s, 车型是%s,汽车在行驶,速度是%s "%(myCar.carPai, myCar.carType, self.speed))
    # 定义一个方法
    def Stop(self):
        print("汽车停止...")

# 将类实例化成对象,将对象赋值给myCar
myCar = Car()

# 修改类中的属性
myCar.speed = "80"
# 给类添加属性
myCar.carType = "SUV"
myCar.carPai = "领克"

# 调用类方法
myCar.Start()
myCar.Run()
myCar.Stop()

类多次实例化的问题

# 定义一个类
class Car():
    carType = "SUV"
    carPai = "领克"
    # 定义一个方法
    def Run(self):
        print("品牌是%s, 车型是%s,汽车在行驶"%(self.carPai, self.carType))

# 将类实例化成对象,将对象赋值给myCar
myCar = Car()
# 给类添加属性
myCar.carType = "SUV"
myCar.carPai = "领克"
# 调用类方法
myCar.Run()

# 将类实例化成对象,将对象赋值给yourCar
yourCar = Car()
# 给类添加属性【因为上面已经添加过carType和carPai两个属性了,因此这里其实是在修改属性】
yourCar.carType = "轿车"
yourCar.carPai = "宝马"
# 调用类方法
yourCar.Run()

3、两个内置方法

__init__
不需要调用,可以自动执行,也就是当实例化的时候,就自动执行
主要的作用是用于初始化一些变量

__str__
不需要调用,可以自动执行,也就是当实例化的时候,就自动执行
主要的作用是用于输出一些提示信息

定义属性的时候,有两种方法

  • 方法1:在类中直接进行定义,和之前定义变量完全一样

  • 方法2:在类的方法中进行定义,定义格式 self.变量名 = 值

  • 如果在类的方法中定义变量的时候,如果没有加self,那么这个变量就是局部变量

案例

# 定义一个类
class Car():
    # init 方法
    def __init__(self,carType, carSpeed):
        # 定义类属性
        self.speed = carSpeed
        self.type = carType
        print("haha,初始化成功")

    # str 方法
    def __str__(self):
        return "这是我们的第一个类的练习"

    # 定义一个方法
    def Run(self):
        print("车型是%s,速度是%s"%(self.type, self.speed))

# 将类实例化成对象,将对象赋值给myCar
myCar = Car("suv","50")
print(myCar)
myCar.Run()

4、类的内置属性和方法

python的变量

  • 直接用 变量名 = 变量值 定义

  • 用 双下划线加上变量名进行定义,类中的私有属性,只有类内部可以使用,子类无法使用

  • 单下划线加上变量名进行定义,这是特殊的属性,无法直接访问,需要提供特殊接口才能访问

  • 用 双下划线加上变量名再加双下划线进行定义

# 常规变量
name = "tom"

# 类的私有属性
__name = "tom"

# 特殊属性,无法直接访问
_name = "tom"

# pyhton中特殊方法的专用标识
__name__ = "tom"

__dict__  获取类中的全部的属性
dir()     获取类中的全部的属性
__name__  获取类的名字
__doc__   获取类的说明文档
__base__  获取当前这个类的父类信息

案例:

# 定义一个类
class MyClass():
    """
        这是我的测试类
        你听懂了吗
    """
    name = "python开发"
    def __init__(self):
        self.height = "175"
    def show(self):
        age = "20"
        print("%s 的年龄是 %s, 身高是%s"%(selfname, age, self.height))

# 通过 __dict__ 可以显示类的全部的属性
print(MyClass.__dict__)     # 即可以显示属性,也可以显示属性的值
print(dir(MyClass))         # 仅仅显示属性,不可以显示属性的值
print(MyClass.__name__)
print(MyClass.__doc__)
print(MyClass.__base__)

可用的变量

  • 全局变量:定义在主程序【类外面】

  • 类变量:定义在类内部,但是不是类的方法里

  • 局部变量:定义在类的方法中的变量,而且定义变量的时候没有加self


5、案例:烤地瓜

让用户输入烘烤时间

  • 烘烤时间在0-3分钟,表示生

  • 烘烤时间在4分钟,表示夹生

  • 烘烤时间在5-8分钟,表示熟

  • 烘烤时间超过8分钟,表示糊了

版本1:面向过程

import sys
def cooke(cTime):
    try:
        cTime = int(cTime)
    except Exception:
        print("时间格式不对")
        sys.exit()

    if cTime>=0 and cTime<=3:
        str = "地瓜还是生的"
    elif cTime == 4:
        str = "地瓜还是夹生的"
    elif cTime>=5 and cTime<=8:
        str = "地瓜是熟的"
    elif cTime>8:
        str = "糊了"
    else:
        print("时长错误")
        sys.exit(3)

    print(str)

userInput = input("请输入烹饪时长:")
cooke(userInput)

版本2:面向对象

分析和规划

属性:

  • cTime 表示的是烹饪时间长度

  • str 表示定义字符串,描述地瓜的生疏程度

方法:

  • init:初始化变量

  • str:让输出结果更美观

  • cooke:烘烤地瓜的方法

import sys

class DiGua():
    # 初始化变量
    def __init__(self, t1):
        self.cTime = t1
        self.str = ""
    # 烹饪

    def cooke(self):
        if self.cTime>=0 and self.cTime<=3:
            self.str = "地瓜还是生的"
        elif self.cTime == 4:
            self.str = "地瓜还是夹生的"
        elif self.cTime>=5 and self.cTime<=8:
            self.str = "地瓜是熟的"
        elif self.cTime>8:
            self.str = "糊了"
        else:
            print("时长错误")
            sys.exit(3)

        print(self.str)

try:
    userInput = int(input("请输入烹饪时长:"))
except Exception:
    print("时间错误")
    sys.exit(3)
    
# 实例化

digua = DiGua(userInput)

# 调用方法去烹饪
digua.cooke()


python面向对象的几个简单例子 @创建几个简单的类 矩形类: class Rectangle(object): ''' 定义一个矩形类 ''' def __init__(self,longth,width): ''' :param longth: 长 :param width: 宽 ''' self.width = width self.longth = longth def ge 阅读详情

相关推荐

【Python】面向对象:类,继承、初始化、调用函数、方法

面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计模型,它将对象作为程序的基本单元,以提高软件的可重用性、灵活性和扩展性。Python是一种支持面向对象编程的语言。 在Python中,面向对象编程主要涉及以下几个核心概念: 类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)

不积跬步无以至千里,不积小流无以成江海。一个喜欢学习分享的程序员 2048

整理了70个Python面向对象编程案例,建议收藏!

Python 作为一门面向对象编程语言,常用的面向对象知识怎么能不清楚呢,今天就来分享一波文章很长,高低要忍一下,如果忍不了,那就收藏吧,总会用到的在 Python 中创建一个类及其对象在 Python 中创建一个空类在 Python 中使用 Type 创建类在 Python 中创建和调用类的方法使用 __init__() 方法为数据属性赋值在 Python 中更新对象属性在 Python 中删除...

Python数据之道 9979

python面向对象案例--买水果

python面向对象案例–买水果 知识点讲解 面向对象基础 ​ 我今天讲的用一句话概括就是对象是可以被当做参数传递的,这句话很精髓 ​ 在你看到这篇文章时,你至少要了解,对象,类,方法,属性这些概念 买水果案例 # 案例 --买水果 # 水果超市,苹果:20,梨子:10,桃子:5,橘子:3 # 问题:买水果 # 1.抽象出对象:水果,你 # 2.各个对象实现自己的功能(抽象出对象的属性和方法) #...

qq_42370150的博客 6383

Python面向对象的30个小例子

Python面向对象微案例及代码解释

数据科学汇集 3698

【Python基础篇】【17.面向对象】(附案例,源码)超详细的保姆级攻略

类与对象 类与对象 类与对象的关系 类和对象的定义 面向对象 什么是面向对象 面向对象的具体表现 Python的类 类和对象的概念 类和对象的关系 1.创建类和对象 2.初始化方法和实例属性 初始化方法 \_\_init\__() 初始化属性 基类中的init方法 一、面向对象 - 封装 隐式的基类 - object 装饰器 案例 - 实例化对象 案例 - 搬家具 案例 - 英雄类 二、面向对象 - 继承 单继承 多继承 子类调用父类的方法和属性 子类重写父类属性和方法 使用 super() 调用父类的方法

weixin_43612602的博客 1687

Mplus—验证性因素分析(Confirmatory Factor Analysis, CFA)

介绍一阶和二阶验证性因素分析概况及在Mplus中的操作方法。

m0_54401011的博客 1万+

从简单的案例展示看Python的面向对象

讲解python的一个例题和面向对象是什么

qq_35749273的博客 1685

UE5网络同步优化:GetLifetimeReplicatedProps高级应用指南

本文深入探讨了UE5中GetLifetimeReplicatedProps函数的高级应用与优化策略。文章超越了基础变量注册,重点阐述了如何通过精细的复制条件控制、频率管理及分层复制机制,构建高效的数据同步通道,从而优化网络带宽与游戏性能,是提升多人游戏体验的实用指南。

weixin_29007243的博客 533

python面向对象案例

python面向对象案例身份运算符私有属性和私有方法python中私有的实质对外提供访问私有属性的接口(方法)小明爱跑步案例1)需求2)分析3)实现摆放家具案例1)需求2)分析3)实现家具类4)实现房子类士兵突击案例1)需求2)分析3)设计枪支类4)设计士兵类 身份运算符 私有属性和私有方法 在实际的开发中,对象的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问 私有属性就是对象不希望公开的属性 私有方法就是对象不希望公开的方法 定义方法:在定义属性或方法时,在属性名或者方法名前增加两

CloserSide的博客 2406

【软考中级网络工程师】知识点之常用网络诊断和配置命令

本文聚焦软考中级网络工程师必备的网络诊断和配置命令,详细解析 ipconfig、ping、arp 等 11 类核心命令。涵盖各命令的功能、语法、常用参数及应用场景,如 ipconfig 查看配置、ping 测试连通性等。还通过图呈现命令执行逻辑与流程,助读者理解原理。最后结合软考考点回顾重点并提供真题练习,为备考和实际运维提供全面指导,是掌握网络命令的实用参考。

邓邓子的博客 1545

数据挖掘实战-基于随机森林算法的交通事故预测模型

本实验数据集来源于Kaggle,原始数据集共有209306条,该数据集包含不同地区和时间段的交通事故详细信息。它包括各种指标,例如事故日期、天气状况、照明条件、碰撞类型、受伤人数和车辆参与情况。数据涵盖多个地点和事故类型,可全面了解交通事故及其原因。具体包括:crash_date:事故发生的日期。Traffic_control_device:所涉及的交通控制设备的类型(例如交通灯、标志)。weather_condition:事故发生时的天气状况。

m0_64336780的博客 1万+

python3面向对象编程案例,python面向对象编程例题

Python中,面向对象三大特性:封装:根据职责将属性和方法封装到一个抽象的类中,并在内部隐藏了对象属性和方法的细节。外界可以使用类来创建外部对象,以此调用方法。其中,外部对象只有通过 "."才可访问到对象的相关变量(非私有),在内部可以直接通过 self. 访问到。继承:实现代码的重用,避免属性和方法的重写,当然必要时可以重写满足子类特定的需求,另外,多继承中,一个子类可以继承多个父类,继承时的顺序很重要,比如两个父类有同名方法,那么在调用时,先继承哪个就会使用哪个。

2301_79533350的博客 1049

华东理工大学计算机预推免面试

华东理工大学预推免面试经验分享

D1379951481的博客 1402

Python学习第14课 面向对象封装案例II

面向对象封装案例II 目标 ● 士兵突击案例 ● 身份运算符 封装 1、封装是面向对象编程的一大特点 2、面向对象编程的第一步——将属性和方法封装到类中 3、外界使用类创建对象,然后让对象调用方法 4、对象方法的细节都被封装在类的内部 一个类的属性可以是另一个类创建的对象 01.士兵突击 需求: 1、士兵 许三多有一把AK47 2、士兵可以开火 3、枪能够发射子弹——减少子弹数量 4、枪装填子弹—...

黎明前最后的黑暗的博客 355

5、自动化代码结构与运维系统的优化

本文探讨了自动化代码结构与运维系统的优化方法,涵盖审批流程的模块化设计、日志记录与工单系统的集成、通知方式的选择、错误处理的策略以及持续改进的实践。同时,深入分析了运维盲目性问题,通过故障案例揭示了关键指标缺失和日志未充分利用的弊端,提出了开发与运维角色转变的必要性。文章还介绍了如何生成有用的系统指标、建立良好的日志习惯以及实施日志聚合,以提升系统的可观测性和可靠性。最终通过总结和流程图展示了优化措施的核心要点,为构建高效、可靠的运维体系提供了指导。

pp12345的博客 71

手把手教你学simulink实例--基于Simulink的航空航天器飞行轨迹规划与仿真详细介绍

航空航天器飞行轨迹规划是实现高效、安全和精确飞行的关键技术。通过Simulink进行航空航天器飞行轨迹规划与仿真,可以验证控制算法的有效性、优化飞行路径,并降低开发成本。以下是如何在MATLAB和Simulink中设计并仿真一个航空航天器飞行轨迹规划系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的航空航天器飞行轨迹规划与仿真系统。该系统能够根据实时环境变化动态调整飞行轨迹,从而提高飞行效率、降低燃料消耗并提升安全性。

MHD0815的博客 388

Python基础篇:面向对象【案例实操】

面向对象编程对初学者来说不难理解但很难应用,虽然我们为大家总结过面向对象的三步走方法(定义类、创建对象、给对象发消息),但是说起来容易做起来难。大量的编程练习和阅读优质的代码可能是这个阶段最能够帮助到大家的两件事情。 接下来我们还是通过经典的案例来剖析面向对象编程的知识,同时也通过这些案例为大家讲解如何运用之前学过的Python知识。...

五包辣条的博客 3847

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1070

开课吧python小课学了有用吗-案例拆解:开课吧Python体验课

今天的案例来自,正在进行的第8期案例拆解活动优秀选手东东,带来的案例拆解是,开课吧Python体验课拆解,enjoy~一、案例背景开课吧是慧科教育科技集团有限公司旗下,泛互联网人职业提升品牌。开课吧整合全球知名IT和互联网企业一线师资及实战项目,面向IT、互联网、产业互联网以及使用互联网技术和应用的广大泛互联网从业者,提供Web前端、Java Python、大数据、人工智能、产品、设计等热门学科...

weixin_37988176的博客 1281

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python面向对象答辩案例_Python面向对象之面向对象封装案例

面向对象封装案例封装封装是面型对象编程的一大特点面向对象编程的第一步--将属性和方法封装到一个抽象的类中;外界使用类创建对象,然后让对象调用方法;对象方法的细节都被封装在类的内部。一个对象的属性可以是另一个类创建的对象跑步案例单对象案例class Person:def __init__(self, name, weight):self.name = nameself.weight = weight...

weixin_36173545的博客 220

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python学习第13课 面向对象封装案例

面向对象封装案例 目标 ● 封装 ● 小明爱跑步 ● 存放家具 01.封装 1、封装是面向对象编程的一大特点 2、面向对象编程的第一步——将属性和方法封装到一个抽象的类中 3、外界使用类创建对象,染回让对象调用方法 4、对象方法的细节都被封装在类的内部 02.小明爱跑步 需求: 1、小明体重75.0公斤 2、小明每次跑步会减肥0.5公斤 3、小明每次吃饭会胖1公斤 class Person(): ...

黎明前最后的黑暗的博客 298

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python面向对象1详解案例

(先前pygame的小游戏后续1中有介绍)

2301_76617986的博客 1741

034.Python面向对象_综合案例

在这里需要注意的是,我们是需要先验证输入的内容是否满足需求,满足需求之后才会进行播报,所以装饰器的顺序也是。方便并不能直接使用装饰器进行装饰,导致无法直接进行语音播报。解决方法:我们将执行语音播报部分单独封装成一个方法,然后。这里出现了一个新的问题点:我们将之前的私有方法。方法结构与上面的运算方法不一致,导致。装饰器进行验证,然后再执行。改变成了装饰器,但是我们的。装饰器中再调用这个方法。在下面,就是优先执行。

weixin_50296259的博客 1139

微课|《Python编程基础与案例集锦(中学版)》第10章例题讲解(2)

适用教材:《Python编程基础与案例集锦(中学版)》(ISBN:9787121355394),董付国,应根球著,电子工业出版社出版社官网购买链接:亚马逊、京东、当当、天猫均有销售,直...

Python小屋 641

python面向对象-多态案例

封装 继承 多态

Xunuannuan的博客 381
上一篇: python第九课 常用模块
下一篇: python第十一次课:模块和包
m5426
博客等级 码龄5年 44粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值