zoukankan      html  css  js  c++  java
  • 给类和对象添加成员方法(封装性)

    举个例子简单介绍怎么给类和对象添加成员方法

    # ### 给类和对象添加成员方法(封装性)
    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
    """
    
    # 给类或对象添加成员属性就简单很多了,直接赋值不用考虑传参
  • 相关阅读:
    5.Makefile的原理及应用
    8.adr与ldr伪指令的区别
    6.反汇编的原理
    9.S5PV210的时钟系统
    1.No MBR错误
    4.交叉编译工具链的安装及使用
    Java角度制向弧度制转化
    Java小题,通过JNI调用本地C++共享库中的对应方法实现杨辉三角的绘制
    编译安装-PHP
    编译安装-MySQL5.5
  • 原文地址:https://www.cnblogs.com/banbosuiyue/p/12797937.html
Copyright © 2011-2022 走看看