热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python的类方法、静态方法、实例方法_Python学习06.07:Python实例方法、静态方法和类方法详解(包含区别和用法)...

接下来就给大家详细的介绍这3种类方法。通常情况下,在类中定义的函数默认都是实例函数。前面章节中,我们已经定义了不只一个函数方法。不仅如此,

19.jpg

接下来就给大家详细的介绍这 3 种类方法。

通常情况下,在类中定义的函数默认都是实例函数。前面章节中,我们已经定义了不只一个函数方法。不仅如此,类的构造方法理论上也属于实例函数,只不过它比较特殊。

比如,下面的类中就用到了实例函数:

class CLanguage:

# 类构造函数,也属于实例函数

def __init__(self):

self.name = "C语言中文网"

self.add = "http://c.biancheng.net"

# 下面定义了一个say实例函数

def say(self):

print("正在调用say()实例函数")

实例函数最大的特点就是,它最少也要包含一个 self 参数,用于绑定调用此函数的实例对象(Python 会自动完成绑定)。实例函数通常会用类变量直接调用,例如:

clang = CLanguage()

clang.say()

运行结果:

正在调用say()实例函数

当然,Python 也支持使用类名调用实例函数,但此方式需要手动给 self 参数传值。例如:

# 类名调用实例函数,需手动给self参数传值

clang = CLanguage()

CLanguage.say(clang)

运行结果为:

正在调用say()实例函数

有关使用类名直接调用实例函数的更多介绍,可阅读《Python类调用实例方法》一节。

Python类函数

Python 类函数和实例函数相似,它最少也要包含一个参数,只不过类函数中通常将其命名为 cls,Python 会自动将类本身绑定给 cls 参数(注意,绑定的不是类对象)。也就是说,我们在调用类方法时,无需显式为 cls 参数传参。

和 self 一样,cls 参数的命名也不是规定的(可以随意命名),只是 Python 程序员约定俗称的习惯而已。

和实例函数最大的不同在于,类函数需要使用@classmethod修饰符进行修饰,例如:

class CLanguage:

# 类构造函数,也属于实例函数

def __init__(self):

self.name = "C语言中文网"

self.add = "http://c.biancheng.net"

# 下面定义了一个类函数

@classmethod

def info(cls):

print("正在调用类函数", cls)

注意,如果没有 @classmethod,则 Python 解释器会将 fly() 方法认定为实例函数,而不是类函数。类函数推荐使用类名直接调用,当然也可以使用实例对象来调用(不推荐)。例如,在上面 CLanguage 类的基础上,在该类外部添加如下代码:

# 使用类名直接调用类函数

CLanguage.info()

# 使用类对象调用类函数

clang = CLanguage()

clang.info()

# 运行结果为:

正在调用类函数

正在调用类函数

Python类静态函数

静态函数,其实就是我们学过的函数,和函数唯一的区别是,静态函数定义在类这个空间(类命名空间)中,而函数则定义在程序所在的空间(全局命名空间)中。

静态函数没有类似 self、cls 这样的特殊参数,因此 Python 解释器不会对它包含的参数做任何类或对象的绑定。也正因为如此,类的静态函数中无法调用任何类变量和类函数。

静态函数需要使用@staticmethod修饰,例如:

class CLanguage:

@staticmethod

def info(name,add):

print(name,add)

静态函数的调用,既可以使用类名,也可以使用类对象,例如:

# 使用类名直接调用静态函数

CLanguage.info("C语言中文网","http://c.biancheng.net")

# 使用类对象调用静态函数

clang = CLanguage()

clang.info("Python教程","http://c.biancheng.net/python")

# 运行结果为:

C语言中文网 http://c.biancheng.net

Python教程 http://c.biancheng.net/python

在实际编程中,几乎不会用到类函数和静态函数,因为我们完全可以使用函数代替它们实现想要的功能,但在一些特殊的场景中(例如工厂模式中),使用类函数和静态函数也是很不错的选择。



推荐阅读
  • 前言无论使用哪种语言,我们都需要关注性能优化,提高执行效率。选择脚本语言需要持久的速度。在某种程度上,这句话说明了Python作为一种脚 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 开发笔记:python协程的理解
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python协程的理解相关的知识,希望对你有一定的参考价值。一、介绍什么是并发?并发的本质就是 ... [详细]
  • Python语言简介、环境搭建、PyCharm的安装和配置
    一、Python语言简介1.1Python语言的基本概念官方对Python语言的介绍如下:Python是一款易于学习且功能强大的编程语言。它具有高效率的数据结构,能够简单又有效地实 ... [详细]
  • 深刻理解 python中函数的参数 引用的传递方式
    函数的参数作为引用Python唯一支持的参数传递模式是共享传参(callbysharing)。共享传参指函数的各个形参获得实参中各个引用的副本。也就是 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
author-avatar
beitianmolang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有