Python基础篇(14):类方法、实例方法和静态方法(Python类中方法的三种形式)

一、类方法

1、类方法的定义

  • 使用 @classmethod 进行修饰
  • 方法中第一个形参是cls
class People:
    @classmethod
    def func_name(cls, params):
        pass

2、类方法的调用

  • “类名.方法名”
  • “对象.方法名”
class Student:
    # 定义类属性
    n = 20

    def __init__(self, name):
        # 定义实例属性
        self.name = name

    @classmethod
    def s_info(cls):
        print(cls.n)  # 类方法可以访问类属性
        print("call Student classmate")
        # print(self.name)   # 类方法不能访问实例属性


Student.s_info()  # 使用“类名.方法名”的方法来调用

stu = Student("张三")
stu.s_info()  # 使用“对象.方法名” 的方法来调用

二、实例方法

1、实例方法的定义

  • 中定义的 方法 默认都是实例方法
  • 第一个形参是self,不需要使用任何的修饰符修饰

2、实例方法的调用

  • 第一种是通过 “对象.方法名” 的方法来调用
  • 第二种是通过 “类名.方法名(对象, 参数列表)” 的形式来调用
class Student:
    # 定义类属性
    n = 20

    def __init__(self, name):
        # 定义实例属性
        self.name = name

    def s_info(self):
        print(self.n)  # 实例方法访问类属性
        print(self.name)   # 实例方法访问实例属性
        print("call Student instancemethod")


stu = Student("张三")

stu.s_info()  # 通过 “对象.方法名” 的方法来调用
Student.s_info(stu)  # 类名.方法名(对象, 参数列表)” 的形式来调用

三、类方法和实例方法区别

  1. 类方法第一个形参是cls,实例方法第一个形参是self
  2. 类方法调用不需要创建对象,实例方法调用必须要创建对象
  3. 类方法可以访问类中的类属性但不可以访问实例属性,访问类属性也是使用 “cls.” 的形式
  4. 实例方法可以访问类中的类属性和实例属性,使用 “self.” 的形式

四、静态方法

1、静态方法的定义

  • 静态方法的需要使用 @staticmethod 来修饰
  • 静态方法的 参数 没有任何的限制,可以没有任何参数,第一个参数也不必像 类方法实例方法 那样
class Student:
    @staticmethod
    def func_name(params):
        pass

2、静态方法的调用

  • “类名.方法名”
  • “对象.方法名”
class Student:
    @staticmethod
    def s_info():
        print("call Student staticmethod")


Student.s_info()  # “类名.方法名” 的方法来调用

stu = Student()
stu.s_info()   # “对象.方法名” 的方法来调用

3、静态方法的使用场景

    静态方法不能访问类属性与实例属性,所以静态方法使用场景如下:

  • 既不需要访问实例属性或者实例方法
  • 也不需要访问类属性或类方法

你可能感兴趣的:(python,开发语言)