python中的实例方法、静态方法和类方法

it2026-01-26  10

对于python中类的这三种方法,之前一直都不清楚其中的差别,最近阅读了《编写高质量代码 改善python程序的91个建议》,颇受启发,现在写出来分享下。

先看下面的一段代码

1 # !/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 class A: 5 name = "A class" 6 7 def instance_method(self): 8 print "this is instance fun" 9 print self.name 10 11 @classmethod 12 def class_method(cls): 13 print "this is class method" 14 print cls.name 15 16 @staticmethod 17 def static_method(): 18 print "this is static method" 19 20 if __name__=='__main__': 21 a = A() 22 a.instance_method() 23 a.class_method() 24 a.static_method() 25 26 A.class_method() 27 A.static_method()

其运行结果如下:

this is instance funA classthis is class methodA classthis is static methodthis is class methodA classthis is static method

简单来说:

实例方法,参数中必须要包含self,  并且可以通过self.XXX来调用或者访问类的方法与属性,但调用该函数必须是类实例后的对象

类方法,由装饰器@classmethod装饰,参数为 类本身(cls), 可以通过cls.XXX来访问类的静态方法与属性, 类或者实例皆可调用

静态方法 由装饰器@staticmethod装饰, 参数与类本身没有关系,也无法访问类的属性与方法  类或者实例皆可调用

转载于:https://www.cnblogs.com/nixiaocang/p/6577710.html

最新回复(0)