举一个例子简单介绍类中的成员方法的调用方式
# ### 类中的成员方法怎么调用 class MyClass1: def func1(self): print(">> func1") def func2(cls): print(">> func2") def func3(self): print("------------func3开始------------") # self是类中的万能对象,在类中使用self调用类自己的成员方法时,不需要额外传参self或cls,可直接调用 self.func1() self.func2() self.func5() self.func6() MyClass1.func1(self) MyClass1.func2(MyClass1) # self.func4() # 这里会自动传参类对象self,但是func4不接受任何参数,所以会报错 MyClass1.func4() print("------------func3结束------------") def func4(): # 这样写其实不合乎规范,因为对象是没法调用这个方法的,但是运行时不会报错 print(">> func4") @staticmethod # 静态方法装饰器 def func5(): print("静态方法>> func5") @classmethod # 绑定类方法装饰器 def func6(cls): print("绑定到类的方法>> func6") # 实例化类对象 obj1 = MyClass1() # 两种方式调用func1函数, obj1.func1() # 对象调用func1,自动传参obj1类对象 MyClass1.func1(obj1) # 类调用func1,需要手动传参obj1类对象 # 查看类中的调用 obj1.func3() MyClass1.func2(MyClass1) # 类调用func2,需要手动传参MyClass1类 # obj1.func4() # 对象调用func4,自动传参obj1类对象,但是func4不接受任何参数,所以会报错,所以对象是没法直接调用func4函数的 MyClass1.func4() # 类调用func4,原本没有参数,不需要传参 """调用静态方法,用类或对象调用都不需要传参,定义静态方法时也不要有self和cls参数,就像模块方法一样直接调用""" MyClass1.func5() obj1.func5() """用类调用调用绑定类方法会自动传参MyClass1类,定义绑定类方法时需要有参数cls""" MyClass1.func6() obj1.func6() # 对象也可以调用,会自动传参MyClass1类,不用额外传参 # 打印结果 """ >> func1 >> func1 ------------func3开始------------ >> func1 >> func2 静态方法>> func5 绑定到类的方法>> func6 >> func1 >> func2 >> func4 ------------func3结束------------ >> func2 >> func4 静态方法>> func5 静态方法>> func5 绑定到类的方法>> func6 绑定到类的方法>> func6 """
# 调用类中的成员属性就简单很多了,直接调用不用考虑传参