美文网首页
类的staticmethod和classmethod的区别

类的staticmethod和classmethod的区别

作者: 晓函 | 来源:发表于2020-03-23 17:21 被阅读0次

    静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法)。
    都可以被类或类的实例对象调用。

    区别:
    staticmethod:子类的继承了父类,调用该方法,还是调用的父类的方法和类属性。
    classmethod:子类的继承了父类,调用该方法,调用的是子类的方法和子类的类属性。
    类方法,第一个参数必须要默认传类,一般习惯用cls。

    staticmethod例子:

    class Person(object):
       name = "person"
       @staticmethod
        def hello():
          print("I am "+Person.name)
    
    class Lucy(Person):
      name = "lucy"
      
    Lucy.hello()
    

    结果显示:I am person

    classmethod例子:

    class Person(object):
       name = "person"
       @classmethod
        def hello(cls):
          print("I am "+cls.name)
    
    class Lucy(Person):
      name = "lucy"
      
    Lucy.hello()
    

    结果显示:I am lucy

    相关文章

      网友评论

          本文标题:类的staticmethod和classmethod的区别

          本文链接:https://www.haomeiwen.com/subject/ixowyhtx.html