python中实现静态方法和类方法都是依赖于python的修饰器来实现的。 对象方法有self参数,类方法有cls参数,静态方法是不需要这些附加参数的。
1、我们已经讨论了类/对象可以拥有像函数一样的方法,这些对象方法与函数的区别只是一个额外的self变量
# -*- coding:utf-8 -*-
#!/usr/bin/python
# Filename: method.py
class Person:
grade=1
def __init__(self,name):
self.name = name
def sayHi(self):#加self区别于普通函数
print 'Hello, your name is?',self.name
@staticmethod #声明静态,去掉则编译报错;还有静态方法不能访问类变量和实例变量
def sayName():#使用了静态方法,则不能再使用self
print "my name is king"#,grade,#self.name
@classmethod #类方法
def classMethod(cls):
print("class method")
p = Person("king")
p.sayHi()
p.sayName()
p.classMethod()
Person.classMethod()
输出:
Hello, your name is? king
my name is king
class method