【Python函数和类6/6】类与对象

news2024/12/25 14:12:57

目录

目标        

类与对象

类的定义

栗子

实例化对象

属性和方法的调用

特殊的self参数

类方法的其它参数

函数与方法的区别

总结


目标        

        在前面的博客当中,我们已经接触了一部分封装。比如:将数据扔进列表中,这就是一个简单的封装,是数据层面的封装。把常用的代码块打包成一个函数,这也是一个封装,属于语句层面的封装。

        今天,我们将学习一种更大的封装 -- 。在后续学习中,类一般都是从模块中直接导入使用。

        所以,今天我们简单了解类的概念类的定义类的属性与方法

类与对象

        和类密切相关的,还有一个概念,叫做对象,它们形影不离。简单来说,表示着一类事物,对象就表示类中某一个具体的实例。

        定义代表一些拥有相同特性与功能的事物。对象是类中的某个具体的实例

        隐喻:将人定义为一个类,“张三”就是人类的一个对象。

类的定义

        在前面,我们学习了Python中定义函数的语法。与之相同,Python中也有用来定义类的语法。为了方便理解,接下来我们定义一个手机的类

        定义了一个手机的类,并命名为Phone。第4~5行,为该手机类添加了品牌和颜色。第7~10行,为该手机类添加了打电话和发短信两个功能。

# 定义一个类Phone
class Phone():
    # 类的属性
    brand = "夜米"
    color = "蓝色"
    # 类的方法
    def makeCall(self):
        print("拨打电话")
    def sendMsg(self):
        print("发送信息")

关键字

简单来说,关键字class是用来告诉Python,我们要定义类。class在英文中本意就是“种类”,它是定义类的固定格式。

一个空格

一个空格,是定义类的标准格式。

类名

为类定义的名称。为了区分类与函数,类的名称首字母建议大写

括号

一对括号,定义类的标准写法。

一个英文冒号,表明接下来缩进的代码是属于这个类的。

缩进

四个空格,表示该代码块属于Phone这个类。

类的属性

属性,表示这个类具有的特性。简单来说,属性就是类中变量的别称

类的方法

类的方法,表示这个类的一些功能。简单来说,方法就是类中的函数的别称。所以,私底下将方法叫做函数也是可以的。、

self参数

self是一个由程序自动传入的特殊参数。它的作用会在后面做一个简单的介绍。

栗子

定义一个类

        定义一个机器类Machines,并为该类添加两个属性shape和size,值分别为"圆形"和"大"。再为该类添加两个方法,high_speed用于输出高速运转,low_speed用于输出低速运转。

# 定义一个机器类Machines
class Machines():
    # 定义类的属性,形状shape为"圆形",尺寸size为"大"
    shape="圆形"
    size="大"
    
    # 定义类的方法high_speed,输出高速运转
    def high_speed(self):
        print("高速运转")
    
    # 定义类的方法low_speed,输出低速运转
    def low_speed(self):
        print("低速运转")
    

实例化对象

        类,代表一些拥有相同特性与功能的事物,是一个抽象的统称。当我们要使用类的时候,必须通过该类创建一个具体的实例,也就是一个对象。我们把类创建对象的过程,称为实例化对象。 下面,我们通过前面定义好的Phone类,来实例化一个对象。

         定义了一个Phone类,并实例化了一个对象myPhone。第13行,通过赋值的方式进行实例化对象。

# 定义一个类Phone
class Phone():
    # 类的属性
    brand = "夜米"
    color = "蓝色"
    # 类的方法
    def makeCall(self):
        print("拨打电话")
    def sendMsg(self):
        print("发送信息")

# 实例化名为myPhone的对象 
myPhone = Phone()
# 输出myPhone对象
print(myPhone)

对象名

一个变量名,给对象设定的名称。示例中,myPhone是通过类Phone创建的一个具体的对象。

类名

定义好的类名

括号

括号,表示使用Phone类,实例化一个对象。

        我们可以看到,输出了一长串东西。简单来说,就是程序给对象分配了地址。其中,0x7f7d69e29610是一串地址,每次均不相同。我们后续会通过调用来查看对象具体的信息。

属性和方法的调用

        当我们实例化一个对象后,这个对象就具有了该类的属性和方法。下面,我们来看看如何进行类属性和类方法的调用。

        使用Phone类实例化了对象myPhone,然后调用了该对象的属性和方法。

# 定义一个类Phone
class Phone():
    brand = "夜米"
    color = "蓝色"
    def makeCall(self):
        print("拨打电话")
    def sendMsg(self):
        print("发送信息")

# 实例化名为myPhone的对象 
myPhone = Phone()
# 输出myPhone的brand属性
print(myPhone.brand)
# 调用myPhone的makeCall方法
myPhone.makeCall()

属性的调用

属性的调用语法为:对象.属性名

示例中,myPhone是对象,紧跟句点.和属性名brand。

方法的调用

方法的调用语法为:对象.方法名()

示例中,myPhone是对象,紧跟句点.和方法名makeCall。方法名后还有一对小括号( )。

当我们调用属性和方法是就需要这几部:

特殊的self参数

        在前面,我们说到了类方法中,会有一个参数self。简单来说,self参数代表的就是实例化生成的对象。即对象会将自己传递给self参数。如图所示,对象myPhone将自己传递给self,此时self.brand就表示是myPhone.brand

类方法的其它参数

        因为类中的方法,本质上也是函数。所以我们也可以在调用类方法时,在括号内传入参数。示例中,参数self会接收实例对象myPhone,而参数n接收调用方法时的实参100。

函数与方法的区别

        最后,我们再来简单了解一下方法和函数的区别。函数一般直接使用,比如print()函数。而方法使用句点表示法,紧跟在某一个对象后面使用,比如.append()方法。

        过往,我们学过的列表、字典,其实也是一种类。当然,我们在后续的编程过程中,大多数情况下,都是使用一些前辈们已经定义好的类,来实现我们的需求。

        所以,对于类的定义简单了解即可,重点是要掌握类属性和类方法的调用。

总结

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

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

相关文章

短视频素材去哪里搬运?短视频素材有哪些类型?

在这个数字化和视觉传达至关重要的时代,选择合适的视频素材对于提升视频内容的吸引力和观众参与度至关重要。无论您是一名广告制片人、社交媒体经理还是独立视频制作者,以下这些精选的视频素材网站将为您提供从高清视频到特效资源的全面支持,…

工厂模式和策略模式区别

工厂模式和策略模式都是面向对象设计模式,但它们的目的和应用场景有所不同。 工厂模式是一种创建型设计模式,旨在通过使用一个工厂类来创建对象,而不是直接使用new关键字来创建对象。这样做可以使系统更容易扩展和维护,因为新的对…

reactjs后台管理系统搭建

1 通过yarn 模板创建reactjs项目 yarn create vite reactjs-antdesign-admin --template react-ts 2 基础路由测试 定义一个router/index.tsx&#xff0c;里面定义路由组件 const Router: React.FC () > {return (<HashRouter><Switch><Route path"…

Edge浏览器使用心得与深度探索

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

信息时代的智慧导航:高效搜索、信息筛选与信任构建的全面指南!

文章目录 一、高效搜索&#xff1a;快速定位目标信息的秘诀二、信息筛选&#xff1a;去伪存真&#xff0c;找到有价值的信息三、信任构建&#xff1a;深入了解与直接沟通《搜索之道&#xff1a;信息素养与终身学习的新引擎》亮点内容简介目录获取方式 随着科技的飞速发展&#…

前端基础学习html(2)

目录 表格标签&#xff1a; 列表标签&#xff1a; 表格标签&#xff1a; <!-- 表格基本架构 --><!-- tr表示一行&#xff0c;td表示一行内单元格 --><!--th为第一行表头加粗居中显示 --><table border"1"><thead><tr><th&g…

用Stream流方式合并两个list集合(部分对象属性重合)

一、合并出共有部分 package com.xu.demo.test;import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;public class ListMergeTest1 {public static void main(String[] args) {List<User> list1 Arrays.asList(new User(1, "Alic…

【linux学习指南】linux指令与实践文件编写

文章目录 &#x1f4dd;前言&#x1f320; linux目录结构&#x1f309;linux命令介绍 &#x1f320;pwd命令&#x1f309;mkdir指令&#xff08;重要&#xff09; &#x1f320;cd 指令&#x1f309;touch指令 &#x1f320;rmdir指令 && rm 指令&#xff08;重要&…

nginx--配置文件

组成 主配置文件&#xff1a;nginx.conf 子配置文件&#xff1a;include conf.d/*.conf 协议相关的配置文件&#xff1a;fastcgi uwsgi scgi等 mime.types&#xff1a;⽀持的mime类型&#xff0c;MIME(Multipurpose Internet Mail Extensions)多用途互联⽹网邮件扩展类型&…

KUKA机器人KR3 R540维护保养——涂润滑脂

KUKA机器人在保养时少不了润滑脂&#xff0c;不同型号的机器人需要的润滑脂类型也不一样&#xff0c;保养时注意选用合适的润滑脂。本篇文章以KUKA机器人KR3 R540为例&#xff0c;在轴盖板 A2、A3、A5 的内侧涂上润滑脂。 一、涂润滑脂的作用 拆开机器人一个轴的盖板&am…

链表面试题2

1&#xff0c;合并两个有序链表 我们先定义一个虚拟节点newH&#xff0c; 然后按照上图所走&#xff0c;但是当其中一个链表走空时&#xff0c;我们只需返回另一个链表即可 class Solution {public ListNode mergeTwoLists(ListNode headA, ListNode headB) {ListNode newhead…

python基础语法--函数

一、函数概述 函数就是执行特定任务完成特定功能的一段代码。可以在程序中将某一段代码定义成函数&#xff0c;并指定一个函数名和接收的输入&#xff08;参数&#xff09;&#xff0c;这样就可以在程序的其他地方通过函数名多次调用并执行该段代码了。 每次调用执行后&#…

Mybatis-Plus学习:快速入门、核心功能、扩展功能、插件功能

文章目录 MybatisPlus快速入门快速开始常见注解常见配置 核心功能条件构造器&#xff08;Wrapper&#xff09;自定义SQLService接口基本用法基础业务接口复杂业务接口Lamda查询Lamda更新批量新增 扩展功能代码生成代码生成器快速开发插件 静态工具逻辑删除枚举处理器JSON处理器…

机器人系统ros2-开发实践04-ROS 2 启动文件管理大型项目的最佳实践

机器人上的大型应用通常涉及多个互连的节点&#xff0c;每个节点可以有许多参数。海龟模拟器中模拟多只海龟就是一个很好的例子。海龟模拟由多个海龟节点、世界配置以及 TF 广播器和监听器节点组成。在所有节点之间&#xff0c;存在大量影响这些节点的行为和外观的 ROS 参数。 …

【C++】哈希的应用---位图

目录 1、引入 2、位图的概念 3、位图的实现 ①框架的搭建 ②设置存在 ③设置不存在 ④检查存在 ​4、位图计算出现的次数 5、完整代码 1、引入 我们可以看一道面试题 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数…

罗宾斯《管理学》第15版笔记/课后习题/考研真题答案

第Ⅰ篇 管理导论 第1章 工作场所中的管理者和你 1.1 知识结构导图 1.2 考点难点归纳 1.3 课后习题详解 1.4 考研真题详解 附加模块一 管理史 知识结构导图 考点难点归纳 课后习题详解 考研真题详解 第2章 决 策 2.1 知识结构导图 2.2 考点难点归纳 2.3 课后习题详解…

C++string类使用大全

目录 温馨提示&#xff1a;这篇文章有约两万字 什么是string类&#xff1f; 一. 定义和初始化string对象 1.string的构造函数的形式&#xff1a; 2.拷贝赋值运算符 3.assign函数 二.string对象上的操作 1.读写string对象 2.读取未知数量的string对象 3.使用getline …

STM32中断系统详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 中断基本概念 2. STM32中断 3. NVIC的基本组件 3.1 NVIC的基本组件 3.2 NVIC的优先级 4. EXTI外部中断 4.1 基本概念 4.2 基本结构 5. AFIO 1. 中断基本概念 中断&#xff08;Interrupt&…

信息技术内涵及意义

一、信息技术及其演进趋势 &#xff08;一&#xff09;信息技术概况概念 信息技术&#xff08;Information Technology&#xff0c;IT&#xff09;指“应用在信息加工和处理中的科学、技术与工程的训练方法与管理技巧&#xff1b;上述方法和技巧的应用&#xff1b;计算机及其…