给类和对象添加成员方法(封装性)
举个例子简单介绍怎么给类和对象添加成员方法
# ### 给类和对象添加成员方法(封装性) class MyClass1: def func1(self): print(">> 成员方法func1") def func2(): print(">> 自定义func2") def func3(obj): """func3中要用obj调用类中的方法,这里的参数obj也就是MyClass1类对象""" print(">> 自定义func3; ", end="") # 加个参数end=""让print打印不自动换行 obj.func1() obj1 = MyClass1() # 给对象添加方法,添加完之后可以用对象调用,但不能用类调用 obj1.func2 = func2 obj1.func2() # MyClass1.func2() # 报错,MyClass1类中没有func2方法 # 给类添加方法,添加完之后可以用类调用,但不能用对象调用 MyClass1.func_two = func2 # 这里只是把func2函数绑定到MyClass1类中并改了个名叫func_two MyClass1.func_two() # obj1.func3() # 报错,因为对象调用会自动传参obj1对象,而func3也就是func2不接受任何参数 """怎样把func4添加到obj1对象中呢""" # 方法一: 直接添加,之后用obj1对象调用时需要传参对象obj1 obj1.func_three1 = func3 obj1.func_three1(obj1) # 方法二: 用MethodType内置方法将func4绑定到obj1对象上,之后用obj1调用时不用传参obj1 import types obj1.func_three2 = types.MethodType(func3, obj1) # MethodType方法可将 obj1.func_three2() # 打印结果 """ >> 自定义func2 >> 自定义func2 >> 自定义func3; >> 成员方法func1 >> 自定义func3; >> 成员方法func1 """ # 给类或对象添加成员属性就简单很多了,直接赋值不用考虑传参