类方法
用**@classmethod**修饰的就是类方法,类方法的第一个参数是cls而非self。
class Person(object):
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
@classmethod # 类方法是为了创建对象
def full_name(cls,name):
first_name,last_name = map(str,name.split(' '))
obj = cls(first_name,last_name)
return obj
malaoshi = Person('马', '老师')
# 使用类方法后,多了一种创建对象的方法
zhanglaoshi = Person.full_name('张 老师')
print(zhanglaoshi.first_name)
print(malaoshi.first_name)
静态方法
用**@staticmethod**修饰的就是静态方法,静态方法的第一个参数既不需要是cls,也不需要是self。可以认为它就是写在类中的普通函数。
class Person(object):
@staticmethod
def full_name():
print('这是一个静态方法')