不说废话,直接上代码
class Test(object):
a = 'a'
def instance_fun(self):
print(self.a)
print(self)
print(self.class_fun)
@classmethod
def class_fun(cls):
print(cls.a)
print(cls)
print(cls.class_fun)
@staticmethod
def static_fun():
pass
# print(a)
t = Test()
t.instance_fun()
print("------------------------")
# Test.instance_fun()
print("========================")
t.class_fun()
print("------------------------")
Test.class_fun()
print("========================")
t.static_fun()
print("------------------------")
Test.static_fun()
代码中注释的部分表示运行报错,而注释的地方只有两个,一个是类调用实例方法,一个是静态方法访问类变量。所以很快我们就能知道:
但是类其实也是可以调用实例方法的,可以这样调用Test.instance_fun(o)
,o
可以是任意对象。所以三者真正的区别在于参数的不同。