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

python的@classmethod和@staticmethod的区别和使用

时间:2020-01-04 10:28:40      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:类的属性   strong   返回   修饰符   调用   run   div   需要   结果   

@classmethod

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。

class A(object):
    bar = 1

    def func1(self):
        print(foo)

    @classmethod
    def func2(cls):
        print(func2)
        print(cls.bar)
        cls().func1()  # 调用 foo 方法


A.func2()  # 不需要实例化

输出结果如下

func2
1
foo

@staticmethod

python staticmethod 返回函数的静态方法。

class C(object):
    @staticmethod
    def f():
        print(runoob);
 
C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用

输出结果如下

runoob
runoob

python的@classmethod和@staticmethod的区别和使用

标签:类的属性   strong   返回   修饰符   调用   run   div   需要   结果   

原文地址:https://www.cnblogs.com/bt14/p/12147728.html

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