给类和对象添加成员方法(封装性)

Posted banbosuiyue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给类和对象添加成员方法(封装性)相关的知识,希望对你有一定的参考价值。

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

# ### 给类和对象添加成员方法(封装性)
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
"""

# 给类或对象添加成员属性就简单很多了,直接赋值不用考虑传参

 

以上是关于给类和对象添加成员方法(封装性)的主要内容,如果未能解决你的问题,请参考以下文章

Java学习 -- 面向对象概述与封装性

Java学习 -- 面向对象概述与封装性

Java——类和对象超详细总结

Java类和对象-学习笔记(超级详细~~~)

Java-类和对象

JAVA中对类和对象的认识