关于类的静态方法:@staticmethod 和 @classmethod 

1、使用这两种方法,不用实例化类,直接可以用,如:Stu.say()

2、两种方法的区别:

  1、@staticmethod 不需要加参数;

      调用类变量用:类名.类变量名;

      调用类函数用:类名.函数()

  2、@classmethod 需要加参数cls;

      调用类变量用:cls.类变量名;

      调用类函数用:cls().函数()

class Stu(object):
    country = 'china'  # 类变量
    def __init__(self, name='world'):
        self.name = name

    @staticmethod
    # 静态方法,和类本身没有什么关系了,就相当于在类里面定义了一个方法而已
    def say():
        print('shanghai')
        print(Stu.country)
        Stu('static').hi()

    @classmethod
    # 静态方法,和类方法不同的是,它可以使用类变量,必须要传一个值,代表的就是这个类
    def hello(cls):
        print('-------------------------')
        print(cls.country)
        cls.say()
        cls().hi()

    def hi(self):
        # 这个是实例方法
        print(self.name)

Stu.say()
Stu.hello()

# t = Stu('name')
# t.hi()
# t.say()
# t.hello()

 

posted on 2017-08-31 17:42  笔-记  阅读(635)  评论(0编辑  收藏  举报