一、静态方法(staticmethod)和类方法(classmethod)

类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性)

静态方法:让类里的方法直接被类调用,就像正常调用函数一样

类方法和静态方法的相同点:都可以直接被类调用,不需要实例化

类方法和静态方法的不同点:

  类方法必须有一个cls参数表示这个类,可以使用类属性

  静态方法不需要参数

绑定方法:分为普通方法和类方法

     普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定到对象

      类方法:默认有一个cls对象传进来,并且可以被类和对象(不推荐)调用-----绑定到类

非绑定方法:静态方法:没有设置默认参数,并且可以被类和对象(不推荐)调用-----非绑定

 1 class Student:
 2     f = open('student', encoding='utf-8')
 3     def __init__(self):
 4         pass
 5     @classmethod #类方法 :有个默认参数cls,并且可以直接使用类名去
 6                  #调用,还可以与类属性交互(也就是可以使用类属性)
 7     def show_student_info_class(cls):
 8         # f = open('student', encoding='utf-8')
 9         for line in cls.f:
10             name,sex = line.strip().split(',')
11             print(name,sex)
12     @staticmethod  #静态方法:可以直接使用类名去调用,就像正常的函数调用一样
13     def show_student_info_static(): #不用传self
14         f = open('student',encoding='utf-8')
15         for line in f:
16             name,sex = line.strip().split(',')
17             print(name,sex)
18 # egon = Student()
19 # egon.show_student_info_static()  #也可以这样调,但是还是推荐用类名去调
20 # egon.show_student_info_class()
21 
22 Student.show_student_info_class()#类名.方法名()
23 print('-------------------')
24 Student.show_student_info_static()#类名.方法名()
staticmethod和classmethod

相关文章: