Python入门教学——类和对象

news2024/10/7 10:24:55

目录

一、面向过程和面向对象

1、面向过程

2、面向对象

二、类

三、类对象与类属性

 1、类对象

 2、类属性

四、类方法与静态方法

1、类方法

2、静态方法


一、面向过程和面向对象

1、面向过程

  • 是一种以过程为中心的编程思想,强调事件的流程和顺序。
  • 思想:需要实现一个功能的时候,看重的是开发的过程和步骤,每一个步骤都需要自己亲力亲为。
  • 例如:吃饭。需要买菜、洗菜、切菜、煮饭、炒菜...
  • 程序=算法+数据

2、面向对象

  • 是一种以对象为中心的编程思想,强调事件的角色和主体。
  • 思想:需要实现一个功能的时候,看重的并不是过程和步骤,而是关心的是对象,对象能做什么。
  • 例如:吃饭。找饭店,饭店提供饭菜,我们不需要关心煮饭做菜的过程。
  • 程序=对象+消息

二、类

  • 是多个类似事物组成的群体的统称,能够帮助我们快速理解和判断事物的性质。可以理解为类别,如人类、鸟类、植物类等。
  • 数据类型也是一种类,不同的数据类型属于不同的类。例如:
  • 创建类的语法:
    • class Student:  # Student为类名,由一个或多个单词组成,每个单词的首字母大写,其余小写
          pass  # 空语句,为了保持程序结构的完整性
  •  Python中一切皆对象,那Student类是对象吗? 内存有开空间吗?
    • 运行发现Student类是有开辟空间的,并且也是一个对象。
  • 类的组成:
    • 类属性、实例方法、静态方法、类方法。
    • 【注】在类之内定义的函数称为方法。
  • 创建一个类
    • class Student:
          native_place='吉林'  # 类属性,直接写在类中的变量
          # 初始化方法
          def __init__(self,name,age): 
              self.name=name   # self.name,self.age为实例属性 
              self.age=age
          # 实例方法
          def info(self) :
              print('我的名字叫:',self.name,'年龄是:',self.age)
          # 静态方法
          @staticmethod
          def sm():
              print('静态方法') 
          # 类方法
          @classmethod
          def cm(cls):
              print('类方法')  

三、类对象与类属性

 1、类对象

  • 对象是一个类下的具体内容,例如:100、99、520都是int类下包含的相似的不同个例。
  • python中一切都是对象,例如:字符串对象、整数对象、字典对象等。
  • 对象的创建又称为类的实例化。
  • 创建对象的语法:
    • stu=Student('Jack',20)  # 实例名=类名(实例属性值)
  • 类和实例的关系:
  • 有了实例,就可以调用类中的内容了。
    • #创建Student类的实例对象
      stu=Student('Jack',20)
      print(stu.name)  # 实例属性
      print(stu.age)  # 实例属性
      stu.info()  # 实例方法
      Student.info(stu)  # 与上条代码功能相同,都是调用info方法。传入的stu实际上就是self
    • 运行结果:
      •  

 2、类属性

  • 类中方法外的变量称为类属性,被该类的所有对象所共享。
  • 使用方式:
    • # 类属性的使用方法
      stu1=Student('张三',20)
      stu2=Student('李四',30)
      print(stu1.native_place)  # 吉林
      print(stu2.native_place)  # 吉林
      Student.native_place='天津'
      print(stu1.native_place)  # 天津
      print(stu2.native_place)  # 天津

四、类方法与静态方法

1、类方法

  • 使用@classmethod修饰的方法称为类方法,需要传入cls。可以使用类名直接访问,也可以使用对象进行访问。
    • @classmethod
      def cm(cls):
          print('类方法')  
  • 使用方式:
    • stu=Student("张三",20)
      stu.cm()  # 类方法
      Student.cm()  # 类方法
      

2、静态方法

  • 使用@staticmethod修饰的方法称为静态方法,可以使用类名直接访问,也可以使用对象进行访问。
    • @staticmethod
      def sm():
          print('静态方法') 
  • 使用方式:
    • stu=Student("张三",20)
      stu.sm()  # 静态方法
      Student.sm()  # 静态方法

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

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

相关文章

驱动开发,IO模型,信号驱动IO实现过程

1.信号驱动IO框架图 分析: 信号驱动IO是一种异步IO方式。linux预留了一个信号SIGIO用于进行信号驱动IO。进程主程序注册一个SIGIO信号的信号处理函数,当硬件数据准备就绪后会发起一个硬件中断,在中断的处理函数中向当前进程发送一个SIGIO信号…

高内聚低耦合

低耦合 元素(方法、类)与元素依赖度不要太高;我们在设计程序时应该降低元素与元素之间的直接关系;降低元素与元素之间的耦合性; 若当前有方法A与方法B,A依赖与B,当B不存在的时候A就不能正常工作,那么就说…

高可用集群HA、LVS+Keepalived、健康检测

keepalived是集群管理中保证集群高可用(HA)的一个服务软件,其功能类似于heartbeat,用来防止单点故障。 2.工作原理 keepalived是以VRRP协议为实现基础的,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个ba…

机器学习笔记之无约束优化问题——(阶段性收尾)共轭方向法与Wolfe准则优化方法Python示例

机器学习笔记之无约束优化问题——基于共轭方向法与Wolfe准则优化方法的Python示例 引言小插曲:画图——非标准二次型的等值线算法在图像中的表示基于精确搜索的共轭梯度法基于Wolfe准则的共轭梯度法 附:共轭梯度法完整代码 引言 本节使用 Python \text…

SQL优化--分组优化(group by)

分组操作,我们主要来看看索引对于分组操作的影响。 在没有索引的情况下,执行如下SQL,查询执行计划: explain select profession , count(*) from tb_user group by profession ;然后,我们在针对于 profession &#…

Linux 上的 Wayland 是什么?它与 X 有何不同?

导读Wayland 是 Linux 发行版的替代窗口系统。它取代了老化的 X11 标准。由于它需要修改应用程序才能使用它,因此迄今为止采用速度很慢。在撰写本文时,增强的安全性是相对于 X11 的主要优势。 X11 或 X Window 系统可让您的图形桌面环境显示和控制窗口。…

【C语言】指针的进阶(一)

目录 前言 1. 字符指针 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 4. 数组参数、指针参数 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5. 函数指针 前言 指针在C语言中可谓是有着举足轻重的…

MySQL夺命20连问

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

Seata 源码篇之核心思想 - 01

Seata 源码篇之核心思想 - 01 引言基础架构数据源代理分支事务提交和回滚隔离级别解决脏写读未提交读已提交 小结 笔者个人项目中使用到了seata来做分布式事务管理,面试过程中也经常被问到seata的原理,seata源码本身也不是很复杂,所以准备出一…

FWT小结

核心思想:把 a , b a,b a,b 化成 f w t ( a ) , f w t ( b ) fwt(a),fwt(b) fwt(a),fwt(b),相乘后再化为 a a a 化的过程用的是分治 所以和FFT其实一模一样 OR / AND 卷积 不需要什么技巧,暴力分治转移即可 每次分治下去,…

瑞萨MCU入门教程(非常详细的瑞萨单片机入门教程)

瑞萨MCU零基础入门系列教程 前言 得益于瑞萨强大的MCU、强大的软件开发工具(e studio),也得益于瑞萨和RA生态工作室提供的支持,我们团队编写了《ARM嵌入式系统中面向对象的模块编程方法》,全书37章,将近500页: 讲解面向对象编程…

硬件笔记:组装“固态 U 盘”的八年,从 100 块到 1000 块

这篇文章,聊聊自从 2015 年开始,到目前为止,我使用固态硬盘组装的高速 U 盘,以及它们的使用体验,以及一些明显的坑。 写在前面 2015 年的 8 月,我剁手下单了一块 32G 大小,NGFF接口的三星 22x…

关于 C/C++ 中在指针前加 const 关键字的作用说明

1. 作用说明: 在指针前加 const 的用途为:不可改变指针指向的内存的值,即将该指向指向的内存中的变量置为只读(read-only) 变量。 但是,可以给 const 的指针赋值,即将具有 const 属性的指针指向别的内存地…

Linux 内核镜像分析

文章目录 前言一、概述二、bzImage2.1 镜像分析 三、zImage3.1 镜像分析参考链接 前言 介绍了vmlinux的来源,以及分析方法; 一、概述 在linux系统中,vmlinux(vmlinuz)是一个包含linux kernel的静态链接的可执行文件…

JavaScript中的原型继承和类继承之间的区别

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 原型继承(Prototype Inheritance)⭐ 类继承(Class Inheritance)⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启…

MySQL开启安全审计日志,开启查询日志

MySQL 查询开启日志 在 MySQL 数据库中,开启查询日志是一个非常有用的技术,它能帮助你追踪每一个执行的查询语句,以便更好地优化 SQL 语句和性能。本文将介绍如何在 MySQL 数据库中开启查询日志。 开启查询日志 MySQL 中的查询日志是一种记…

Mysql开启binlog

本案例基于mysql5.7.16实验 1、在linux中进入mysql查询binlog是否打开,执行命令如下: mysql -u root -p 2、查询binlog是否开启命令如下,如果log_bin为OFF则证明mysql的binlog没有打开 show variables like %log_bin%; 3、退出mysql终端&…

OPC DA如何实现跨平台

目录 简介 EntireX DCOM Utgard OPC XML DA OPC UA 协议转换代理 简介 本文介绍OPC DA跨平台通讯的几种方案。 OPC官方说明文档 OPC(OLE for Process Control)是为过程控制专门设计的OLE 技术,基于COM/DCOM的数据访问的标准。常说的O…

vmware去虚拟化

路径:C:\Program Files (x86)\VMware\VMware Workstation\x64\vmware-vmx.exe ,复制一份备份 用16进制工具打开修改这个文件,如winhex 1、搜索 25 73 2E 65 6E 61 62 6C ,找到上面有两个"VMware"开头的 2、硬盘SCSI格…

JAVASE---String类

String类的重要性 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而…