静态方法(由@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
网友评论