python 以下两个代码 有什么区别?

考试题

class Foo(object):
    def func(self,num):
        pass
    
obj = Foo()
obj.func(123)

obj = Foo()
Foo.func(obj, 123)

想知道 这两种执行方法 有什么区别

第一种,self代表的是类的实例;
第二种,self指向的是类。

这段代码区别看不出来,但是加几句代码就看出区别了

class Foo(object):
    def func(self,num):
        print(self,num)
        pass
    
obj1 = Foo()
obj1.func(123)
obj2 = Foo()
Foo.func(obj1, 123)
Foo.func(obj2, 123)


输出结果如下

img