今天聊下类中的实例方法,静态方法和类方法的区别以及如何使用。
class Foo(object): class_property = 100 def __init__(self): self.instance_property = 200 def instance_method(self): #第一个参数必须是实例对象“self”,通过它传递实例或者类的属性和方法,只能由实例对象调用 print('这里是实例方法,只能被实例对象调用') self.class_property = 55 #通过self修改类属性 self.instance_property = 55 #通过self修改实例属性 print('实例方法可以访问类属性和实例属性,class_property = %s,istance_property = %s' % (self.class_property, self.instance_property)) @classmethod def class_method(cls): #第一个参数必须是当前类对象“cls”,通过它传递类的属性和方法,实例对象和类对象都可以调用 print('这里是类方法,可以被类和实例对象调用') cls.class_property = 66 #通过cls修改类属性 print('类方法只可以访问类属性,不能访问实例属性,class_property = %s' % cls.class_property) @staticmethod #参数没有self和cls参数,所以方法体内不能使用类和实例的任何属性和方法,实例对象和类对象都可以调用 def static_method(): print('这里是类的静态方法,可以被类和实例对象调用') print(Foo.class_property) print(Foo().instance_property) print('静态方法不能直接访问任何类属性和实例属性,使用类对象和实例对象来引用类属性和实例属性')
Foo.class_method() Foo.static_method() foo = Foo() foo.instance_method() foo.class_method() foo.static_method()
1,其中实例对象的权限最大,可以使用类属性,实例属性,可以调用类方法,实例方法和静态方法。
2,类方法和静态方法可以由类直接调用,无需实例化,这就方便了该类方法的使用,可以将一些常用的工具类的方法封装为类的静态方法或者类方法,其中静态方法和类之间没有什么联系,只是为了方便管理,方便使用。
3,原则上,类方法是将类本身作为对象进行操作的方法。另外,如果需要继承,也可以定义为类方法。
4,在静态方法内如有要引用类属性的话必须是否类对象来引用。