class Test(object):
age = 20
def __init__(self, name):
self.name = name
def func(self):
print self.age, self.name, Test.age
@classmethod
def class_func(cls):
print Test.age, cls.age
@staticmethod
def static_func(arg):
print arg, Test.age
t = Test()
t.func()
t.class_func()
t.static_func()
Test.class_func()
Test.static_func()
方法定义:
1:实例方法就是类的实例能够使用的方法。
2:静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作。使用装饰器@staticmethod定义静态方法。类对象和实例都可以调用静态方法。
3:类方法是将类本身作为对象进行操作的方法。类方法使用@classmethod装饰器定义,其第一个参数是类,约定写为cls。类对象和实例都可以调用类方法。
使用:
1:类的实例可以访问实例方法,类方法和静态方法
2:类可以访问类方法和静态方法,但是不能访问实例方法。
3:类和实例都能访问类的成员属性。实例可以访问实例属性,但是类不能访问实例属性。
参数传递区别:
1:实例方法悄悄传递的是self引用作为参数,
2:类方法悄悄传递的是cls引用作为参数。
3:静态方法无隐含参数。
网友评论