python基础语法 010 类和对象-3 方法

news2024/9/23 13:18:28

 

 1.3 方法

属性表示是一个类当中的成员或类的特征,而方法是??

方法:表示类、对象的行为,方法本质上是函数,是一个特殊的函数

  • 属性名称一般为名词,
  • 方法名称一般为动词

1.3.1 方法 VS 属性

  • 1、self
  • 2、放在类里面,存在缩进的,否则就是普通函数了
  • 3、调用过程不一样,方法需要加前缀,类名或者对象名 而函数前面要么不加,要么加的是模块名称

1.3.2 实例方法、对象方法的特征:

1)定义
  • 1、实例方法直接定义在类中
  • 2、第一个参数名称,必须规定是self
  • 3、实例方法在调用的时候,前缀是对象,不能是类,
2) 实例方法的访问:

        只有该类的实例对象都可以访问,访问实例方法的时候会自动将对象本身当成承诺书,传给self接收 


class Man:
    #定义类属性
    gender = '男'
    power = '强'
    handsome = 'very'

    def drink(self):
        "喝"
        pass
    def play_game(self):
        "玩游戏"
        pass
  

#对象.方法()
Man().drink()

xiaoyi = Man()
xiaoyi.drink()

#类.方法()
# Man.drink() #不可
"""报错,行为是属于某一个人的,不能被类调用
TypeError: drink() missing 1 required positional argument: 'self'
"""

1.3.3 类方法:本质上还是一个函数

1)定义:
  • 1、在方法的上面添加装饰器:@classmethod
  • 2、把实例方法当中的self改为cls代表class的缩写,第一个参数必须是当前类的对象,该参数名一般定义为’cls‘, 通过它来传递类的属性和方法(不能传实例的属性和方法)
2)调用:

        实例对象和类对象都可以使用
 

class Man:
    #定义类属性
    gender = '男'
    power = '强'
    handsome = 'very'

 
    #装饰器,代表封装这个函数的功能,用了就是类方法
    @classmethod
    def eat(cls):
        print("正在吃")


#类.方法()
#打印函数的调用打印出来的是函数的返回值
print(Man.eat())

print(Man().eat())
"""
正在吃
None 
正在吃
None  ===>因为打印的是返回值,没有return打印为None
"""
3)应用场景:

        需要站在类的角度执行某个行为时,就应该定义为类方法

1.3.4 静态方法

1)定义:

        使用装饰器@staticmethod,参数随意,没有’self‘和’cls‘参数,但是方法体中不能使用类或实例的任何属性和方法


class Man:
    @staticmethod
    def tianqi(self):
        print("天气不错")
#静态方法使用
Man.tianqi()
"""静态方法不需要用self
TypeError: tianqi() missing 1 required positional argument: 'self'
"""
2)调用:

        实例对象和类对象都可以调用

3)应用场景:

        存放逻辑代码,内部不需要引用类属性和实例属性

4)是什么?

        是刚刚好放在一个类当中的普通函数而已,除了放在类当中和普通函数没什么区别

        指:把其放到类外面,和普通函数无区别只是没有装饰器@staticmethod,

class Man:
   
    @staticmethod
    def tianqi():
        print("天气不错")

        和下列普通函数无差别

def tianqi(self): 
    print("天气不错")

        没有实际作用,和类或者对象没有关系(联系)

5) 为什么要用静态方法,为什么要把普通函数放到类当中去?

         ANS:方便管理,把普通函数放在指定的类中,这样查找该函数就可以在指定类寻找,整个代码管理不至于太混乱 和类方法无关系,只是放在类里面

6)调用静态方法

         静态方法(普通函数):只需要在调用静态方法,前面加上类名或者对象名

        而 类外面的普通函数:普通函数不需要加类、对象名,不是模块调用,也不用加模块

class Man:
    #定义类属性
    gender = '男'
    power = '强'
    handsome = 'very'

    @staticmethod
    def tianqi():
        print("天气不错")



#调用静态方法
Man.tianqi()
Man().tianqi()

实际使用过程当中:

  • 实例方法:占98%,实例方法占大多数情况
  • 类方法、静态方法:工作一般用不到

                >在实际情况中,不知道用什么方法,就用实例方法

                >类方法:后续会有特殊情况介绍

                >静态方法:使用静态方法要么可以写为实例方法,要么定义一个普通函数,可使用普通函数代替,不是必须的(方便管理)

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

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

相关文章

24/8/17算法笔记 DDPG算法

深度确定性策略梯度(DDPG)算法是一种用于解决连续动作空间强化学习问题的算法。它结合了确定性策略梯度(DPG)和深度学习技术的优点,通过Actor-Critic框架进行策略和价值函数的近似表示。DDPG算法的关键组成部分包括经验…

【RAG综述】北京大学检索增强技术综述

RAG for AIGC ​ 图 1 描述了一个典型的 RAG 过程。给定一个输入查询,检索器识别相关的数据源,检索到的信息与生成器交互以改进生成过程。根据检索结果如何增强生成,有几种基础范式(简称基础):它们可以作为…

STM32的蜂鸣器

蜂鸣器分为有源蜂鸣器和无源蜂鸣器。 有源蜂鸣器:内部有震荡源,只要通电即可自动发出固定频率的声音。(频率固定无 法控制音色) 。 无源蜂鸣器:内部无震荡源,需要外部脉冲信号驱动发声,声音频…

《机器学习》 线性回归 一元、多元 推导 No.3

一、什么是线性回归 线性回归是一种用于预测连续数值的机器学习算法。它基于输入特征与目标变量之间的线性关系建立了一个线性模型。线性回归的目标是找到最佳拟合直线,以最小化预测值与实际值之间的误差。这个线性模型可以用来进行预测和推断。 线性回归的模型可以…

SpringBoot Profile多环境配置及配置优先级

【SpringBoot学习笔记 三】Profile多环境配置及配置优先级_profiles队列中的优先值-CSDN博客 Profile激活方式 但是我们发现一个问题,就是每次切换环境还需要去配置里指定,然后通过修改dev为test或prod来切换项目环境 , 这样做的话每次切换环境都要重新改…

前端面试——如何判断对象和数组

给你一个值,如何判断其是对象还是数组??? 我们先给出数据 var lists [1,2,3,4,5]var objs {length:5 } 我们分别尝试如下五种方法 console.log((✘)使用length,lists.length,objs.length); console.log((✔)使用isArray,Arr…

【已成功EI检索】第三届机电一体化技术与航空航天工程国际学术会议(ICMTAE 2023)

重要信息 大会官网:www.icmtae.org 大会时间:2023年9月15-17日 大会地点:中国-江西南昌理工学院(南昌市青山湖区经济技术开发区英雄大道901号) 接受/拒稿通知:投稿后1周内 收录检索:EI 和 …

Vulkan 学习(4)---- Vulkan 逻辑设备

目录 Vulkan Logical Device OverView逻辑设备创建VkDeviceQueueCreateInfoDeviceExtension获取DeviceQueue参考代码 Vulkan Logical Device OverView 在 Vulkan 中,逻辑设备(Logical Device)是与物理设备(Physical Device)交互的接口,它抽象了对特定GPU(物理设备)…

CDD数据库文件制作(八)——服务配置(0x85)

目录 1.子功能创建2.会话切换配置/安全等级配置2.1.根据诊断调查表进行信息提取2.2.会话转换配置/安全等级配置3.寻址方式信息提取/禁止肯定响应位(SPRMIB)信息3.1.寻址方式/禁止肯定响应位(SPRMIB)配置4.否定响应码信息提取4.1.否定响应码配置按照诊断调查表中对0x85服务的…

PX30 Android8.1适配AIC8800 wifi

wifi驱动生成ko文件 生成后 通过wpa_supplicant加载参数 external/wpa_supplicant_8/wpa_supplicant/main.c int main(int argc, char *argv[]) {int ret -1;char module_type[20]{0};wpa_printf(MSG_INFO,"argc %d\n",argc);if(argc 2) {if (wifi_type[0] 0) …

【MySQL】数据库基础(表的操作)

目录 一、创建表 二、查看表结构 三、修改表 3.1 添加新列 3.2 修改列属性 3.3 删除列属性 3.4 修改表名 3.5 向表中插入 3.6 修改列名 四、删除表 一、创建表 语法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) …

docker容器安全加固参考建议——筑梦之路

这里主要是rootless的方案。 在以 root 用户身份运行 Docker 会带来一些潜在的危害和安全风险,这些风险包括: 容器逃逸:如果一个容器以 root 权限运行,并且它包含了漏洞或者被攻击者滥用,那么攻击者可能会成功逃出容器…

车载camera avm框图

一、关键词介绍: POC: power on coax LVDS: Low-Voltage Differential Signaling GMSL:Gigabit Multimedia Serial Link AVM: Around View Monitor Serdes:DeSerializer、Serializer DVP:Interface with ISP and Sensor: DVP(Digital Video Port) 二、车载camera avm…

书籍推荐:大数据之路 阿里巴巴大数据实践

书籍推荐:大数据之路 阿里巴巴大数据实践 这本书侧重于理论知识,并结合了阿里大数据发展的过程,将知识总结起来。总的来所,书中的有些章节个人感觉非常不错,比如:数据仓库建模;但是大部分章节都…

性能优化理论篇 | 如何保证数据安全落盘,5分钟彻底弄懂 一次write中的各种缓冲区 !

性能优化系列目录: 性能优化理论篇 | 彻底弄懂系统平均负载 性能优化理论篇 | swap area是个什么东西 性能优化理论篇 | Cache VS Buffer,傻傻分不清 ? 在很多IO场景中,我们经常需要确保数据已经安全的写到磁盘上,以便…

xss之DOM破坏

文章目录 DOM破坏漏洞的复现https://xss.pwnfunction.com/基于bp学院DOM破坏漏洞复现思路分析实现 常见的xss触发的标签没有过滤的情况存在过滤的情况 DOM破坏 DOM破坏就是⼀种将 HTML 代码注⼊⻚⾯中以操纵 DOM 并最终更改⻚⾯上 JavaScript ⾏为的技术。 在⽆法直接 XSS的情…

Linux·权限与工具-make

1. Makefile/makefile工具 首先展示一下,makefile工具如何使用。我们先写一个C语言程序 然后我们建立一个Makefile/makefile文件,m大小写均可。我们在文件中写入这样两行 wq保存退出后,我们使用 make 命令 可以看到生成了可执行程序&#xff…

无人机模拟训练室技术详解

无人机模拟训练室作为现代无人机技术培训的重要组成部分,集成了高精度模拟技术、先进的数据处理能力及高度交互的操作界面,为无人机操作员提供了一个安全、高效、接近实战的训练环境。以下是对无人机模拟训练室技术的详细解析,涵盖系统基础概…

为TI的 AM355移植uboot和linux内核

一、uboot移植 在移植之前要先对uboot的源码结构有一定熟悉 1.uboot源码顶层目录下各源码文件夹的作用 2.编译后生成的uboot.xxx 各文件后缀含义 关于以上两点社区已经有很多前辈总结的很详细,这里不做赘述。 对于uboot源码分析韦东山老师b站上有免费的课程&#x…

QT中Charts基本用法

QT中Charts基本用法 第一步:创建工程,添加Charts库 第二步:添加charts视图 注意要打上对钩 第三步:添加所需成员 第四步:编写初始化函数 第五步:添加测试数据