【Python】类与对象

news2024/11/24 3:47:40


知识目录

  • 一、写在前面✨
  • 二、类与对象简介
  • 三、Car类的实现
  • 四、Date类的实现
  • 五、总结撒花😊

一、写在前面✨

大家好!我是初心,希望我们一路走来能坚守初心!

今天跟大家分享的文章是 Python中面向对象编程的类与对象。 ,希望能帮助到大家!本篇文章收录于 初心 的 Python从入门到精通 专栏。

🏠 个人主页:初心%个人主页
🧑 个人简介:大家好,我是初心,和大家共同努力
💕欢迎大家:这里是CSDN,我记录知识的地方,喜欢的话请三连,有问题请私信😘

💕 长大后就忘了吗?曾经拥有的梦想。』—— 藤子不二雄「哆啦A梦」

二、类与对象简介

Python 是一种面向对象的编程语言。

Python 中的几乎所有东西都是对象,拥有属性和方法。

类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。

如需创建类,请使用 class 关键字:(例如)

class MyClass:
  x = 5
  • init() 函数

上面的例子是最简单形式的类和对象,在实际应用程序中并不真正有用。

要理解类的含义,我们必须先了解内置的 init() 函数。

所有类都有一个名为 init() 的函数,它始终在启动类时执行。

类定义不能为空,但是如果您处于某种原因写了无内容的类定义语句,请使用 pass 语句来避免错误。

三、Car类的实现

编程要求:按注释要求完成下列car类的实现。

class Car:
    '''
    >>> deneros_car = Car('Tesla', 'Model S')
    >>> deneros_car.model
    'Model S'
    >>> deneros_car.gas
    30
    >>> deneros_car.gas -= 20 # The car is leaking gas
    >>> deneros_car.gas
    10
    >>> deneros_car.drive()
    'Tesla Model S goes vroom!'
    >>> deneros_car.drive()
    'Cannot drive!'
    >>> deneros_car.fill_gas()
    'Gas level: 20'
    >>> deneros_car.gas
    20
    >>> Car.gas
    30
    >>> Car.gas = 50 # Car manufacturer upgrades their cars to start with more gas
    >>> ashleys_car = Car('Honda', 'HR-V')
    >>> ashleys_car.gas
    50
    >>> ashleys_car.pop_tire()
    >>> ashleys_car.wheels
    3
    >>> ashleys_car.drive()
    'Cannot drive!'
    >>> brandons_car = Car('Audi', 'A5')
    >>> brandons_car.wheels = 2
    >>> brandons_car.wheels
    2
    >>> Car.num_wheels
    4
    >>> brandons_car.drive() # Type Error if an error occurs and Nothing if nothing is displayed
    'Cannot drive!'
    >>> Car.drive(brandons_car) # Type Error if an error occurs and Nothing if nothing is displayed
    'Cannot drive!'
    >>> brandons_car.color
    'No color yet. You need to paint me.'
    >>> brandons_car.paint('yellow')
    'Audi A5 is now yellow'
    '''


    def __init__(self, make, model):


    def paint(self, color):


    def drive(self):


    def pop_tire(self):


    def fill_gas(self):

	# Edit Your Code Here

import doctest
doctest.testmod()

具体实现:

# 定义类变量 gas 初始值为30
gas = 30
# 定义车轮初始数为4
wheels = 4
num_wheels = 4
# 初始化车品牌和车型
def __init__(self, make, model):
    self.make = make
    self.model = model
    self.color = 'No color yet. You need to paint me.'
def paint(self, color):
    self.color = color
    return self.make+' '+self.model+' is now %s'%self.color
def drive(self):
    if (self.gas > 0 and self.wheels == self.num_wheels):
        # 每次开车耗油10
        self.gas -= 10
        return 'Tesla Model S goes vroom!'
    else:
            # 如果油量不足或者车轮数不足都不能开车
        return 'Cannot drive!'
def pop_tire(self):
    # 将轮胎数减少1
    self.wheels -= 1
def fill_gas(self):
    # 加油一次加20,返回剩余油量
    self.gas += 20
    return 'Gas level: %d' % self.gas

四、Date类的实现

编程要求:date类实现年月日的-、+、==、repr方法。


class MyDate:
    """
    >>> MyDate(2023, 5, 4) == MyDate(2023, 5, 4)
    True
    >>> MyDate(2023, 5, 7) - MyDate(2023, 1, 4)
    123
    >>> MyDate(2024, 2, 29) + 365
    MyDate(2025, 2, 28)
    >>> MyDate(2025, 2, 28) - MyDate(2024, 2, 29)
    365
    >>> MyDate(2024, 12, 31) + 2
    MyDate(2025, 1, 2)
    """
    # Edit Your Code Here
    
    def __init__(self, year, month, day):
        

    def __add__(self, numofdays):

    
    def __sub__(self, other):

    
    def __eq__(self, other):
        
    
    def __repr__(self):
        
    
import doctest
doctest.testmod()

具体实现:


# 日期转换工具
from dateutil import parser
# 日期时间库
from datetime import timedelta, datetime

class MyDate:

    def __init__(self, year, month, day):
        # 判断月、日是否小于10,如果小于10就加上'0'
        if (month < 10):
            month = '0' + str(month)
        else:
            month = str(month)
        if (day < 10):
            day = '0' + str(day)
        else:
            day = str(day)
        year = str(year)
        # 将日期格式确定为'xxxx-xx-xx'
        self.date = year + '-' + month + '-' + day

    def __add__(self, numofdays):
        # 将字符串格式的日期转换为 datetime 类型
        date_obj = datetime.strptime(self.date, '%Y-%m-%d').date()
        # 加上 days 得到 新的 datetime 对象
        date = date_obj + timedelta(days=numofdays)
        # 返回新的 MyDate 对象
        return MyDate(date.year, date.month, date.day)
    
    def __sub__(self, other):
        # 得到相差的天数
        days = (parser.parse(self.date) - parser.parse(other.date)).days
        return days
    
    def __eq__(self, other):
        if isinstance(other, MyDate):
            if self.date == other.date:
                return True
            else:
                return False
    
    def __repr__(self):
        # 返回字符串
        date_obj = datetime.strptime(self.date, '%Y-%m-%d').date()
        return "MyDate(%d, %d, %d)"%(date_obj.year,date_obj.month,date_obj.day)

五、总结撒花😊

本文主要讲解了Python中基础的面向对象编程。😊

这就是今天要分享给大家的全部内容了,我们下期再见!😊

🏠 本文由初心原创,首发于CSDN博客, 博客主页:初心%🏠

🏠 我在CSDN等你哦!😍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一道北大强基题背后的故事(一)——从走弯路到看答案

早点关注我&#xff0c;精彩不错过&#xff01; 在前面的系列文章《我的数学学习回忆录——一个数学爱好者的反思&#xff08;二&#xff09;》中&#xff0c;我从宏观层面回忆了我的数学学习历程和反思。其实&#xff0c;我和数学之间还有很多很多意识流一样的交流和故事&…

训练DeeplabV3+来分割车道线

本例我们训练DeepLabV3语义分割模型来分割车道线。 DeepLabV3模型的原理有以下一些要点&#xff1a; 1&#xff0c;采用Encoder-Decoder架构。 2&#xff0c;Encoder使用类似Xception的结构作为backbone。 3&#xff0c;Encoder还使用ASPP(Atrous Spatial Pyramid Pooling)&…

听听飞桨框架硬核贡献者如何玩转开源!

当仰望星空时&#xff0c;你在想什么&#xff1f;我在想象&#xff0c;未来可能是什么样子。从应用广泛的人工神经网络&#xff0c;到火遍全网的AIGC&#xff0c;创造新宇宙的人&#xff0c;相信永远看不到天花板。 在这些神奇的AI产品背后&#xff0c;有一个了不起的开源项目—…

滴滴时空供需系统的设计和演进

本篇文章分为&#xff1a; 1.背景介绍 2.系统框架的演进 2.1 旧系统框架的不足 2.2 新系统框架的优势 3.系统建设思考 3.1 存储治理 3.2 性能优化 3.3 研发提效&#xff1a;配置化能力升级 3.总结 1. 背景介绍 时空供需系统(SDS, supply and demand system)是为了满足滴滴网约车…

开箱即用的工具函数库xijs更新指南(v1.2.6)

xijs 是一款开箱即用的 js 业务工具库, 聚集于解决业务中遇到的常用函数逻辑问题, 帮助开发者更高效的开展业务开发. 接下来就和大家一起分享一下 v1.2.6 版本的更新内容以及后续的更新方向. 贡献者列表: 1. 计算变量内存calculateMemory 该模块主要由 zhengsixsix 贡献, 我们可…

leetcode练习(汇总插入区间)

文章目录 题目一&#xff1a;汇总区间题目二&#xff1a;插入区间 语言&#xff1a;python 工具&#xff1a;jupyuter 题目一&#xff1a;汇总区间 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c…

“程序员,致敬!”

手机震动&#xff0c;提醒着我3年前参加研发的应用迎来了一次重大升级。我按下开源社区提供的合并请求按钮&#xff0c;与开源社区的朋友分享我对这个项目的改进。不久&#xff0c;一条消息提醒我合并请求已被其它社区成员审核通过。 这种远程协作、开源分享的方式是如今广泛存…

chatgpt赋能python:Python数值计算指南:为什么它是一种强大的工具

Python数值计算指南&#xff1a;为什么它是一种强大的工具 当谈到数值计算时&#xff0c;许多人所想到的编程语言都是MATLAB和R。然而&#xff0c;Python也在数值计算领域有着强大的地位。Python是一种令人难以置信的通用编程语言&#xff0c;它不仅为数据科学和机器学习提供了…

行人检测重识别yolov5+reid(跑通+界面设计)

行人检测重识别yolov5reid&#xff08;跑通界面设计&#xff09; 参考源代码: github 权重文件&#xff1a; 根据github上面的网盘进行权重下载&#xff1a; 检测&#xff1a;将 ReID_resnet50_ibn_a.pth放在person_search/weights文件下&#xff0c;yolov5s.pt放person_sear…

如何用海外代理辅助对接 ChatGPT

许多朋友问我有没有好用的海外代理。说实话&#xff0c;真的好用的并不多。 最近我了解到了一家还不错的海外代理&#xff0c;叫做 IPIDEA&#xff0c;我已经使用了一段时间了&#xff0c;觉得质量挺不错。 你可能知道&#xff0c;我最近在进行一些 ChatGPT 相关的研究&#xf…

DTW 2023:戴尔发力多云战略与边缘运营

近日&#xff0c;2023戴尔科技全球科技大会&#xff08;Dell Technologies World&#xff0c;简称DTW&#xff09;在美国拉斯维加斯如期而至。 作为戴尔科技集团一年一度的科技盛宴&#xff0c;本届DTW吸引了众多业界人士的关注。而作为本届大会的重头戏&#xff0c;戴尔科技集…

Spark学习笔记

1 spark简介 (1) spark是基于内存计算的分布式并行计算框架&#xff0c;如今已成为apache软件基金会最重要的三大分布式计算系统开源项目之一(Hadoop、Spark、Storm)。 (2) spark组件 (3) spark组件应用场景 Spark Streaming&#xff1a;提供流计算功能 Sparl SQL&#xff1…

Python实现循环的最快方式(for、while等速度对比)

众所周知&#xff0c;Python 不是一种执行效率较高的语言。此外在任何语言中&#xff0c;循环都是一种非常消耗时间的操作。假如任意一种简单的单步操作耗费的时间为 1 个单位&#xff0c;将此操作重复执行上万次&#xff0c;最终耗费的时间也将增长上万倍。 while 和 for 是 …

JavaCV - 图像暗通道去雾

一、效果图 二、实现原理 暗通道先验:首先说在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值,也就是说该区域光强是一个很小的值。所以给暗通道下了个数学定义,对于任何输入的图像J,其暗通道可以用下面的公式来表示:其中JC表示彩色图像每个…

SOFA Weekly|SOFAChannel#33 直播预告、Layotto 社区会议回顾与预告、社区本周贡献

SOFA WEEKLY | 每周精选 筛选每周精华问答&#xff0c;同步开源进展 欢迎留言互动&#xff5e; SOFAStack&#xff08;Scalable Open Financial Architecture Stack&#xff09;是蚂蚁集团自主研发的金融级云原生架构&#xff0c;包含了构建金融级云原生架构所需的各个组件&am…

阿里、腾讯、京东齐降价:云计算迎来新拐点

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 618源于京东创办日&#xff08;创办于2004年6月18日&#xff09;&#xff0c;发展至今&#xff0c;618已然成为中国两大最火爆的消费节点之一。每年618&#xff0c;京东都会推出覆盖全品类的优惠政策&#xff0c;并以严格的…

chatgpt赋能python:Python捕获所有异常

Python 捕获所有异常 Python是一种易用、高效的编程语言&#xff0c;广泛应用于Web开发、数据科学、人工智能等领域。在Python编程中&#xff0c;异常处理是一项重要的技能&#xff0c;因为程序总会出现各种异常情况&#xff0c;如输入错误、网络错误、程序崩溃等等。Python提…

矿井水除氟——高矿化度矿井水氟化物深度降解的技术方案

高矿化度矿井水是指含有高浓度溶解性矿物质的废水&#xff0c;通常指的是含有高浓度钠、钙、镁、铁、铝、钾等离子的废水。这些离子通常来自于废水所处的环境、工业或生产过程中使用的原材料和化学品。高矿化度的废水通常具有高盐度、高电导率、高硬度等特征&#xff0c;对环境…

(十七)ArcGIS 属性表生成GUID字段

ArcGIS 属性表生成GUID字段 目录 ArcGIS 属性表生成GUID字段 1.GUID概念2.GUID格式3. ArcGIS 属性表生成GUID字段3.1新建GUID字段3.2生成GUID字段 1.GUID概念 全局唯一标识符&#xff08;GUID&#xff0c;Globally Unique Identifier&#xff09;是一种由算法生成的二进制长度…

堆的实现+堆的应用(堆排序和Topk)

珍惜当下的一切&#xff0c;相信未来的一切都是美好的。 -- 丹尼尔迪凯托目录 一.堆的概念及结构 二.堆的各种函数的实现 1.结构体的内容 2.堆的初始化 3.堆的插入 4.堆的向上调整法 5.验证堆的向上调整法 6.堆顶的删除 7.堆的向下调整法 8.返回堆…