搜索
首页后端开发Python教程Python中的静态方法与类成员

前言

因为Python的水平目前一直是处于能用阶段,平时写的脚本使用的Python的写法也比较的简单,没有写过稍微大一点的项目。对Python中的类,类之间的组织关系,整个项目中类之间如何耦合还缺乏认识。打算读一读别人写的Python代码来学习一下Python在工程中的应用,提升自己的技术水平。选取的Python代码是Python爬虫代码,github地址。这个代码刚好是符合跳出我的舒适区的水平的代码,因此很适合我目前的水平来学习。

在Python2.4之后,主要使用装饰器来实现静态方法和类方法。

装饰器使用@操作符,例子如下:

class Example:
 val1 = "Value 1"
 def __init__(self):
 self.val2 = "Value 2"

 @staticmethod
 def staticmd():
 print("静态方法,无法访问Value1和Value2")

 @classmethod
 def classmd(cls):
 print('类方法,类:'+str(cls)+",val1:"+cls.val1+",无法访问val2的值")


example = Example()
example.staticmd() #实例调用静态方法,无法访问实例变量val1和val2
example.classmd() #实例调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:Value 1,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:Value 1,无法访问val2的值
example.val1 = "The instance value1 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:Value 1,无法访问val2的值
Example.val1 = "The class value2 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:The class value2 changed,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:The class value2 changed,无法访问val2的值

相信从上面的例子中,就可以很明显地分辨出静态方法和类方法的区别了。

先是在语法上面的区别:

  • 静态方法不需要传入self参数,类成员方法需要传入代表本类的cls参数;

  • 静态方法是无妨访问实例变量和类变量的,类成员方法无法访问实例变量但是可以访问类变量

使用的区别:

由于静态方法无法访问类属性,实例属性,相当于一个相对独立的方法,跟类其实并没有什么关系。这样说来,静态方法就是在类的作用域里的函数而已。

更多Python中的静态方法与类成员相关文章请关注PHP中文网!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
您如何切成python阵列?您如何切成python阵列?May 01, 2025 am 12:18 AM

Python列表切片的基本语法是list[start:stop:step]。1.start是包含的第一个元素索引,2.stop是排除的第一个元素索引,3.step决定元素之间的步长。切片不仅用于提取数据,还可以修改和反转列表。

在什么情况下,列表的表现比数组表现更好?在什么情况下,列表的表现比数组表现更好?May 01, 2025 am 12:06 AM

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/删除,2)储存的二聚体和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

如何将Python数组转换为Python列表?如何将Python数组转换为Python列表?May 01, 2025 am 12:05 AM

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,请考虑performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

当Python中存在列表时,使用数组的目的是什么?当Python中存在列表时,使用数组的目的是什么?May 01, 2025 am 12:04 AM

choosearraysoverlistsinpythonforbetterperformanceandmemoryfliceSpecificScenarios.1)largenumericaldatasets:arraysreducememoryusage.2)绩效 - 临界杂货:arraysoffersoffersOffersOffersOffersPoostSfoostSforsssfortasssfortaskslikeappensearch orearch.3)testessenforcety:arraysenforce:arraysenforc

说明如何通过列表和数组的元素迭代。说明如何通过列表和数组的元素迭代。May 01, 2025 am 12:01 AM

在Python中,可以使用for循环、enumerate和列表推导式遍历列表;在Java中,可以使用传统for循环和增强for循环遍历数组。1.Python列表遍历方法包括:for循环、enumerate和列表推导式。2.Java数组遍历方法包括:传统for循环和增强for循环。

什么是Python Switch语句?什么是Python Switch语句?Apr 30, 2025 pm 02:08 PM

本文讨论了Python版本3.10中介绍的新“匹配”语句,该语句与其他语言相同。它增强了代码的可读性,并为传统的if-elif-el提供了性能优势

Python中有什么例外组?Python中有什么例外组?Apr 30, 2025 pm 02:07 PM

Python 3.11中的异常组允许同时处理多个异常,从而改善了并发场景和复杂操作中的错误管理。

Python中的功能注释是什么?Python中的功能注释是什么?Apr 30, 2025 pm 02:06 PM

Python中的功能注释将元数据添加到函数中,以进行类型检查,文档和IDE支持。它们增强了代码的可读性,维护,并且在API开发,数据科学和图书馆创建中至关重要。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。