【Python】类与对象

简介: 【Python】类与对象

2fe19ddce53248e287f29e844d3bf607.png

一、写在前面✨


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

今天跟大家分享的文章是 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等你哦!😍

相关文章
|
17天前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
64 4
|
8天前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
2月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
173 3
|
2月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
77 0
|
6月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
281 15
|
6月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
202 5
|
6月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
128 11
|
9月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
367 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
7月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
115 1
|
10月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
200 2

推荐镜像

更多