实例方法例子:
class Foo(object): def __init__(self, name): self.name = name # 实例方法 def func(self): print(self.name) obj = Foo('..') obj.func()静态方法例子:
class Foo(object): def __init__(self, name): self.name = name # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法 @staticmethod def display(a1,a2): return a1 + a2 Foo.display(1,3)区别: 1.调用上: 实例方法:需要借用 对象(创建一个对象,赋予其属性),才能调用其方法。 静态方法:并不需要(创建对象),而直接可以调用其方法 因此,在使用上,实例方法内部并不能使用静态方法的变量(因为静态方法不经过创建对象,在类不存在其属性)。静态方法内部可以使用其实例方法。 2.区分静态方法和实例方法的原因: 创建c++、java、c#这样面向对象语言的大师引入实例化方法,使得编程更加面向对象化,模式化。静态方法和实例化方式的区分是为了解决模式的问题。(面向过程,还是面向对象) 3.适用场景 静态方法:一个方法与类的对象无关,如工具类等 实例方法:一个方法依赖于类的对象;多线程场景下,如果静态方法中含有静态变量,如果对静态变量进行更改操作易造成线程安全问题