这篇文章主要介绍了关于 Python 中静态方法与类成员的相关资料,文中通过示例代码给大家详细总结了两者在语法和使用上的区别,有需要的朋友可以参考借鉴,下面来一起看看吧。
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
前言
因为 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 '__main__.Example'>,val1:Value 1,无法访问val2的值
- Example.classmd() #类调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:Value 1,无法访问val2的值
- example.val1 = "The instance value1 changed"
- example.classmd() #类调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:Value 1,无法访问val2的值
- Example.val1 = "The class value2 changed"
- example.classmd() #类调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:The class value2 changed,无法访问val2的值
- Example.classmd() #类调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:The class value2 changed,无法访问val2的值
相信从上面的例子中,就可以很明显地分辨出静态方法和类方法的区别了。
先是在语法上面的区别:
使用的区别:
由于静态方法无法访问类属性,实例属性,相当于一个相对独立的方法,跟类其实并没有什么关系。这样说来,静态方法就是在类的作用域里的函数而已。
总结
好了,以上就是这篇文章的全部内容了,最后,如何在实际的项目中使用静态方法和类方法,这个等一段时间有更深的体会再和大家交流吧。希望本文的内容对大家的学习或者工作能带来一定的帮助。
来源: http://www.phperz.com/article/17/0319/326082.html