Python测试

Python 类方法、实例方法、静态方法区别与联系

2020-05-12  本文已影响0人  北京硕爷

作者:夕夕石(硕爷)


一、表格直观展示区别

-- 实例调用 类调用 访问实例属性 访问类属性
实例方法
类方法
静态方法

二、逐个介绍

1、实例方法/对象方法

实例方法或者叫对象方法,指的是我们在类中定义的普通方法。

只有实例化对象之后才可以使用的方法,该方法的第一个形参接收的一定是对象本身

class Person:
    def hello(self): # 实例方法
        print("hello")

# 只能实例调用,不能类调用        
p = Person() # 先要将类实例化。才能调用下面的实例方法
p.hello()

2、静态方法

(1) 格式:在方法上面添加 @staticmethod

(2) 参数:静态方法可以有参数也可以无参数

(3) 应用场景:一般用于和类对象以及实例对象无关的代码。

(4) 使用方式: 类名.类方法名(或者对象名.类方法名)。

定义一个静态方法

class Game:
 
  @staticmethod
  def menu(): # 静态方法,可以有参数,也可以没有参数
    print('------')
    print('开始[1]')
    print('暂停[2]')
    print('退出[3]')
 
# 两种调用都支持 
Game.menu() # 这是类调用
Game().menu() # 这是实例调用

3、类方法

无需实例化,可以通过类直接调用的方法,但是方法的第一个参数接收的一定是类本身

(1) 在方法上面添加@classmethod

(2) 方法的参数为 cls 也可以是其他名称,但是一般默认为cls

(3) cls 指向 类对象

(4) 应用场景:当一个方法中只涉及到静态属性的时候可以使用类方法(类方法用来修改类属性)。

(5) 使用:可以是 对象名.类方法名。或者是 类名.类方法名

class Person:
  type = '人类'
 
  @classmethod
  def test(cls):
    print(cls.type)
 
# 两种调用都支持 
Person.test() # 这是类调用
Person().test() # 这是实例调用

三、举例

class getMinNum():
    class_pro = "class_pro" # class_pro这是类属性

    def __init__(self, pro):
        self.instance_pro = pro # instance_pro这是实例属性

    def instance_fun(self): # instance_fun这是实例方法
        print(getMinNum.class_pro) # 实例方法可以访问类属性
        print(self.instance_pro) # 实例方法可以访问实例属性

    # 类方法应用场景:类方法用来修改类属性
    @classmethod
    def class_fun(cls): # class_fun这是类方法
        print(getMinNum.class_pro) # 类方法可以访问类属性
        # print(self.instance_pro) 报错 # 类方法不能访问实例属性

    # 静态方法应用场景:一般用于和类对象以及实例对象无关的代码
    @staticmethod
    def static_fun(): # static_fun这是静态方法(传不传参均可)
        print(getMinNum.class_pro) # 静态方法可以访问类属性
        # print(getMinNum.instance_pro) 报错 # 静态方法不能访问实例属性

作者:夕夕石(硕爷)

夕夕石微信

上一篇下一篇

猜你喜欢

热点阅读