class ClassA(object): @staticmethod def func_a(): print('Hello Python') class Classb(object): def func_a(): print('Hello Python') class ClassC(object): @classmethod def func_a(cls): print(type(cls), cls) class ClassD(object): def func_a(self): print('Hello Python') if __name__ == '__main__': # #静态方法 # ClassA.func_a() # # 也可以使用实例调用,但是不会将实例作为参数传入静态方法 # ca = ClassA() # ca.func_a() # #如果一个类方法里面没有self参数,也没有@staticmethod装饰 # # 只能通过类去调用这个方法,不能通过实例调用 # Classb.func_a() # #实例调用引发异常 # ca = Classb() # ca.func_a() # #类方法,无论是类调用还是实例调用,类方法都能正常工作 # ClassC.func_a() # ca = ClassC() # ca.func_a() # 实例方法,除静态方法与类方法外,类的其他方法都属于实例方法。 # 实例方法需要将类实例化后调用,如果使用类直接调用实例方法, 需要 # 显式地将实例作为参数传入。 # 最左侧传入的参数self,是实例本身。 #使用实例调用实例调用实例方法 ca = ClassD() ca.func_a() #如果使用类方法调用实例方法,需要显式的将实例作为参数传入 ClassD.func_a(ca)
class ClassA(object): @staticmethod def func_a(): print('Hello Python') class Classb(object): def func_a(): print('Hello Python') class ClassC(object): @classmethod def func_a(cls): print(type(cls), cls) class ClassD(object): def func_a(self): print('Hello Python') if __name__ == '__main__': # #静态方法 # ClassA.func_a() # # 也可以使用实例调用,但是不会将实例作为参数传入静态方法 # ca = ClassA() # ca.func_a() # #如果一个类方法里面没有self参数,也没有@staticmethod装饰 # # 只能通过类去调用这个方法,不能通过实例调用 # Classb.func_a() # #实例调用引发异常 # ca = Classb() # ca.func_a() # #类方法,无论是类调用还是实例调用,类方法都能正常工作 # ClassC.func_a() # ca = ClassC() # ca.func_a() # 实例方法,除静态方法与类方法外,类的其他方法都属于实例方法。 # 实例方法需要将类实例化后调用,如果使用类直接调用实例方法, 需要 # 显式地将实例作为参数传入。 # 最左侧传入的参数self,是实例本身。 #使用实例调用实例调用实例方法 ca = ClassD() ca.func_a() #如果使用类方法调用实例方法,需要显式的将实例作为参数传入 ClassD.func_a(ca)