经常在使用python时都会用到类,但是类中的方法有几种类型有些人可能真不知道。其实python类中的方法有3种类型:

1、实例方法

2、静态方法

3、类方法

1 class DoExcel():
 2 
 3     def __init__(self,filename,sheetname):
 4         self.filename = filename
 5         self.sheetname = sheetname
 6 
 7     #实例方法,只能通过实例来调用,第一个参数必须是self,表示实例本身;也可以传其他参数
 8     def get_data(self):
 9         print(self.name)  #可以调用类方法中的变量
10         heads = self.get_head()
11         pass
12 
13     #静态方法,没有必须传的参数;也可以传其他参数
14     @staticmethod
15     def add_num():
16         return 1+2
17 
18     #类方法,第一个参数必须是cls,表示class/类本身;也可以传其他参数
19     @classmethod
20     def mod_num(cls):
21         cls.name = 'test_methods'
22         return 123%7

 

调用的不同:

1、实例方法仅能通过实例调用;

2、静态方法和类方法可以用实例调用,也可以直接通过类名调用;

1     datas = DoExcel('test_data.xlsx','datas') #初始化一个实例,必须要传初始化函数的参数
 2     # 实例方法的调用 通过实例调用
 3     datas.get_data()
 4 
 5     # 静态方法的调用 方法一:通过实例调用
 6     datas.add_num()
 7     # 静态方法的调用 方法二:通过类名调用
 8     DoExcel.add_num()
 9 
10     # 类方法的调用 方法一:通过实例调用
11     datas.mod_num()
12     # 类方法的调用 方法二:通过类名调用
13     DoExcel.mod_num()

静态方法和类方法的区别:

1、类方法第一个参数必须传入cls,表示类本身;

2、类方法里用cls定义的变量等,可以在其他的实例方法中用self进行使用;静态方法无该功能;