类是创建实例的模板,而实例是一个个具体的对象,各个实例拥有的数据相互独立、互不影响。
在类中定义的函数称为方法,主要有三种:实例方法、类方法、静态方法
class Book(object):
bar = 1
def foo(self):
print 'foo'
@staticmethod
def static_foo():
print 'static foo'
print Book.bar
@classmethod
def class_foo(cls):
print 'class foo'
print cls.bar
cls().foo()
staticmethod
无需 self
参数,无需 cls
参数,直接声明一个静态方法,可无需实例化,直接由类调用,也可实例化后调用。
#实例调用
a = Book()
# static foo ; 1
a.static_foo()
#类调用
# static foo ; 1
Book.static_foo()
#实例调用
Book().static_foo()
实例方法
实例方法传入的第一个参数必须是 self
,表示实例本身
classmethod
第一个参数需要是表示自身类的cls参数
可以使用实例调用,也可以类调用
实例方法 | 静态方法 | 类方法 | |
a=Book() | a.foo() | a.static_foo() | a.class_foo() |
Book | Book.static_foo() | Book.class_foo() |