Rumah > pembangunan bahagian belakang > Tutorial Python > 关于静态与类成员的实例详解(python)

关于静态与类成员的实例详解(python)

Y2J
Lepaskan: 2017-05-06 14:30:06
asal
1572 orang telah melayarinya

这篇文章主要介绍了关于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的值
Salin selepas log masuk

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

先是在语法上面的区别:

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

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

使用的区别:

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

【相关推荐】

1. Python免费视频教程

2. Python学习手册

3. Python面向对象视频教程

Atas ialah kandungan terperinci 关于静态与类成员的实例详解(python). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan