百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python零基础一周学(9)——Python 中的类

off999 2024-11-17 14:35 16 浏览 0 评论

学习大纲

学习目标

要达到的水平

第一个 Python 程序

会输出文字

变量类型初识

会创建字符串和数字这两种变量类型并学会数字运算的方法

条件语句

掌握三个关键字:if elif 和 else,并能用它们控制代码执行方向

常用的字符串操作

掌握对字符串进行切片,追加等操作

四大常用类型的操作

掌握这4种内置类型(list、tuple、dict 、set)的增删查改操作

循环语句

掌握 while 和 for 这两种循环方式

函数

掌握创建和调用函数的方法

文件操作

掌握文件的读写方法

掌握创建和使用类的方法


当前学习进展: 类

PS:本文转载自

@顺手牵羊

开始之前

本专栏下的代码绝大多数是 python 代码(除非特地说明),所以需要大家在学习之前安装一下 python 环境,如果没有安装的话,建议参考我之前特地写的一篇 python 及代码编辑器的安装教程

环境搭建

概要

之前有讲过,函数可以增加代码的健壮性以及可维护性,但是,如果函数多了,那么可能就没那么容易记了。在生活中,如果有一大堆文件,那么喜欢整理的人,往往会新建并对文件夹重命名,然后把同类型的文件归类在一起,经过这样子的分类之后,查找文件往往会更快。这也体现了物以类聚的思想。本篇文章将简述如何用类似的方法,对我们创建的多个函数进行归类。

正文

想必大家都知道 “人类”这个词吧,至于“人类的起源”咱们就不去探索了。人类往往有多个属性以及功能。例如年龄、性别、姓名、出生日期等属性,干饭、购物、睡觉等功能。下面将使用代码来对人类的部分属性以及功能进行简单的描述以让大家理解类是怎么创建以及调用的。

示例代码

# 以 class 关键字 + 类名(下面这个是叫Person)以创建一个类
class Person:
    def __init__(self, name: str = "", birthday="", gender="未知") -> None:
        '''
        进行一系列初始化操作
        '''
        # 初始化姓名
        self.name = name
        # 初始化性别
        self.gender = gender
        # 初始化生日
        self.birthday = birthday
        if len(name.strip()) == 0:
            print('人类世界多了一个人,但他还没有姓名。')
        else:
            print(f'人类世界多了一个人,姓名是: {self.name} 性别是: {self.gender}')

    def set_name(self, name: str) -> None:
        '''
        设置人的姓名
        '''
        self.name = name
        print(f'我的名字变成了: {name}')
?
    def set_birthday(self, birthday: str)->None:
        '''
        设置人的生日
        '''
        self.birthday = birthday
        print('我的父母记错了我的生日,现在我的生日被改成了:', birthday)
?
    def sleep(self, sleep_time: int)->None:
        '''
        休眠指定时间
        '''
        print(f'{self.name} 将休息 {sleep_time} 小时......')
?
    def eat(self, food_name: str)->None:
        '''
        吃东西
        ---
        参数:
        food_name: 要被吃的东西名称
?
        '''
        print(f'{self.name} 正在吃 {food_name}')
?
    def shop(self, shop_date: str, *items)->None:
        '''
        购物
        ---
        参数:
        shop_date: 购物日期
        items:可选参数,以逗号分隔可以传递多个
        '''
        print(f'{self.name} 在 {shop_date} 买了:', *items)
?
    def __str__(self) -> str:
        '''
        重写 __str__方法,描述人的基本信息
        '''
        destription = f'我的姓名是: {self.name}\n生日是: {self.birthday}\n性别是: {self.gender}'
        return destription
?
    def go_to_school(self, school_name: str)->None:
        '''
        上学
        ---
        参数:
        school_name: 学校名称
        items:可选参数,以逗号分隔可以传递多个
        '''
        print(f"{self.name} 要去 {school_name} 上学了")
?
?
# 实例化人类并定几个初始值
p = Person(name="小明", birthday="2021年2月11日", gender="男")
# 输创建的人的基本信息
print(p)
# 更改生日
p.set_birthday('2021年2月8日')
# 购物
p.shop('202年2月16日', '苹果', '香蕉')
# 吃东西
p.eat('苹果')
# 改名
p.set_name('大明')
# 休息
p.sleep(8)
# 上学
p.go_to_school("魔法学院")
?

示例代码运行结果

人类世界多了一个人,姓名是: 小明 性别是: 男
我的姓名是: 小明
生日是: 2021年2月11日
性别是: 男
我的父母记错了我的生日,现在我的生日被改成了: 2021年2月8日
小明 在 202年2月16日 买了: 苹果 香蕉
小明 正在吃 苹果
我的名字变成了: 大明
大明 将休息 8 小时......
大明 要去 魔法学院 上学了

结构剖析

创建方法描述

通过关键字class+类的名称+冒号+代码块

定义一个类示例代码

# 类名 A
class A:
    def __init__(self):
        print('成功实例化类A')

调用类的方法

# 类名 + 一对圆括号
A()

调用输出结果

成功实例化类A

类的继承

必要性

假设你已经有了一个类,但是某一天你需要搞一个新的聚合,但是大部分要聚合的东西跟之前的差不多,如果重新写代码无疑是浪费精力的,所以有一个好办法就是继承原有的东西,然后在此基础上增加新的功能或改写旧的东西。

示例代码

class A:
    def __init__(self):
        print('成功实例化类A。')
?
    def eat(self):
        print('我喜欢吃苹果。')
?
?
class B(A):
    def __init__(self):
        print('我继承了了类 A,你成功实例化了我。')
    # 在类 A 的基础上添加新的功能
?
    def new_function(self):
        print('我有新功能了!')
?
?
# 实例化类 A
a = A()
# 调用 A 中的 eat 方法
a.eat()
b = B()
# 尽管 B 中没有显示定义 eat 方法,但是因为它继承了A类,而A类中有 eat 方法,故其可以调用
b.eat()
b.new_function()
?

示例代码运行结果

成功实例化类A。
我喜欢吃苹果。
我继承了了类 A,你成功实例化了我。
我喜欢吃苹果。
我有新功能了!

写在最后

本篇文章主要讲了怎么使用 Python 创建、调用、继承类,以进一步理解面向对象编程的思想,进一步增加代码的健壮性和可维护性。最后,我一直认为个人的思考难免有疏漏之处,所以欢迎各路英雄前来赐教!(未经同意,勿转载哦)

相关推荐

python入门到脱坑经典案例—清空列表

在Python中,清空列表是一个基础但重要的操作。clear()方法是最直接的方式,但还有其他方法也可以实现相同效果。以下是详细说明:1.使用clear()方法(Python3.3+推荐)...

python中元组,列表,字典,集合删除项目方式的归纳

九三,君子终日乾乾,夕惕若,厉无咎。在使用python过程中会经常遇到这四种集合数据类型,今天就对这四种集合数据类型中删除项目的操作做个总结性的归纳。列表(List)是一种有序和可更改的集合。允许重复...

Linux 下海量文件删除方法效率对比,最慢的竟然是 rm

Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...

数据结构与算法——链式存储(链表)的插入及删除,

持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表。链...

Python自动化:openpyxl写入数据,插入删除行列等基础操作

importopenpyxlwb=openpyxl.load_workbook("example1.xlsx")sh=wb['Sheet1']写入数据#...

在Linux下软件的安装与卸载(linux里的程序的安装与卸载命令)

通过apt安装/协助软件apt是AdvancedPackagingTool,是Linux下的一款安装包管理工具可以在终端中方便的安装/卸载/更新软件包命令使用格式:安装软件:sudoapt...

Python 批量卸载关联包 pip-autoremove

pip工具在安装扩展包的时候会自动安装依赖的关联包,但是卸载时只删除单个包,无法卸载关联的包。pip-autoremove就是为了解决卸载关联包的问题。安装方法通过下面的命令安装:pipinsta...

用Python在Word文档中插入和删除文本框

在当今自动化办公需求日益增长的背景下,通过编程手段动态管理Word文档中的文本框元素已成为提升工作效率的关键技术路径。文本框作为文档排版中灵活的内容容器,既能承载多模态信息(如文字、图像),又可实现独...

Python 从列表中删除值的多种实用方法详解

#Python从列表中删除值的多种实用方法详解在Python编程中,列表(List)是一种常用的数据结构,具有动态可变的特性。当我们需要从列表中删除元素时,根据不同的场景(如按值删除、按索引删除、...

Python 中的前缀删除操作全指南(python删除前导0)

1.字符串前缀删除1.1使用内置方法Python提供了几种内置方法来处理字符串前缀的删除:#1.使用removeprefix()方法(Python3.9+)text="...

每天学点Python知识:如何删除空白

在Python中,删除空白可以分为几种不同的情况,常见的是针对字符串或列表中空白字符的处理。一、删除字符串中的空白1.删除字符串两端的空白(空格、\t、\n等)使用.strip()方法:s...

Linux系统自带Python2&yum的卸载及重装

写在前面事情的起因是我昨天在测试Linux安装Python3的shell脚本时,需要卸载Python3重新安装一遍。但是通过如下命令卸载python3时,少写了个3,不小心将系统自带的python2也...

如何使用Python将多个excel文件数据快速汇总?

在数据分析和处理的过程中,Excel文件是我们经常会遇到的数据格式之一。本文将通过一个具体的示例,展示如何使用Python和Pandas库来读取、合并和处理多个Excel文件的数据,并最终生成一个包含...

【第三弹】用Python实现Excel的vlookup功能

今天继续用pandas实现Excel的vlookup功能,假设我们的2个表长成这样:我们希望把Sheet2的部门匹在Sheet1的最后一列。话不多说,先上代码:importpandasaspd...

python中pandas读取excel单列及连续多列数据

案例:想获取test.xls中C列、H列以后(当H列后列数未知时)的所有数据。importpandasaspdfile_name=r'D:\test.xls'#表格绝对...

取消回复欢迎 发表评论: