zoukankan      html  css  js  c++  java
  • python3类方法,实例方法和静态方法

          今天简单总结下python的类方法,实例方法,静态方法。

          python默认都是实例方法,也就是说,只能实例对象才能调用这个方法。

          那是不是说类方法也只能被类对象本身来调用呢,当然,不是。类方法既可以被类对象调用,也可以被实例对象调用。你可以这样理解,假设我现在定义的是‘dog狗’,它有一个类方法‘啃骨头’,那么对于所有的狗是不是都可以调用啃骨头这个方法,既然这样,我现在创建一个‘旺财’实例,它也同样可以去啃骨头,也就是能调用这个类方法。 

           静态方法你可以理解为参数可以随意设置的方法,类对象和实例对象都可以调用它。

    #!usr/bin/env python
    # coding:utf-8
    
    class A:
        def funa(self):
            print('实例方法')
    
        @classmethod
        def funb(cls):
            print('类方法')
    
        @staticmethod
        def func():
            print('静态方法')
    
    if __name__ == '__main__':
        #生成一个实例对象
        a = A()
        a.funa() #input:实例方法
        
        #报错:TypeError: funa() missing 1 required positional argument: 'self'
        #A.funa()
        
        a.funb() #input:类方法
        A.funb() #input:类方法
        a.func() #input:静态方法
        A.func() #input:静态方法

    总结:类中方法在未加@之类装饰器时都是属于实例方法,只能被实例对象调用。

      @classmethod类方法,可以被类对象和实例对象调用。

      @staicmethod静态方法,可以被类对象和实例对象调用,参数可以随意设置。

  • 相关阅读:
    2018.5.17 memcached
    2018.5.11 B树总结
    2018.5.8 排序总结
    2018.5.8 python操纵sqlite数据库
    2018.5.4 Unix的五种IO模型
    2018.5.3 maven
    2018.5.3 docker
    Mybatis学习笔记,挺全的!
    这么强大的Mybatis插件机制原来就是这?
    Swagger API Spec + Swagger Codegen + YAPI管理接口文档
  • 原文地址:https://www.cnblogs.com/sjfeng1987/p/9189828.html
Copyright © 2011-2022 走看看