'''
类方法
·是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,
·对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数
·(当然可以用其他名称的变量作为其第一个参数)
·能够通过实例对象和类对象去访问。
'''
class Person:
sex = "male"
def __init__(self, name):
self.name = name
@classmethod
def getSex(cls):
return cls.sex
@classmethod
def setSex(cls, sex):
cls.sex = sex
'''
静态方法
@staticmethod来进行修饰,静态方法不需要多定义参数
'''
@staticmethod
def getSexII():
return Person.sex
def tell(self):
print("我是%s" % (self.name))
if __name__ == '__main__':
p = Person("fate")
print(p.getSex())
print(p.getSexII())
'''
总结
1、类方法的第一个参数是类对象cls:引用的必定是类对象的属性和方法
2、实例方法的第一个参数是实例对象self:那么通过self引用的可能是类属性、
也有可能是实例属性(这个需要具体分析)
3、静态方法中不需要额外定义参数:必须通过类对象来引用
classmethod与staticmethod有何区别?
主要区别首先是classmethod有cls参数,staticmethod没有,其次classmethod可以使用类成员变量和其他类方法,
而staticmethod只是一个普通方法,只是绑定到类上而已,
另外staticmethod不能被重载。
'''