码迷,mamicode.com
首页 > 编程语言 > 详细

python3类方法,实例方法和静态方法

时间:2018-06-16 12:06:22      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:div   那是   code   装饰器   typeerror   int   定义   python3   missing   

      今天简单总结下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静态方法,可以被类对象和实例对象调用,参数可以随意设置。

python3类方法,实例方法和静态方法

标签:div   那是   code   装饰器   typeerror   int   定义   python3   missing   

原文地址:https://www.cnblogs.com/sjfeng1987/p/9189828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!