首页 > 编程语言 > 详细

python 类属性绑定到类的实例属性

时间:2021-07-20 15:13:15      阅读:16      评论:0      收藏:0      [点我收藏+]

python 类属性绑定到类的实例属性

例子

我有一个类A和一个B类。我们把B的实例对象作为A的一个类属性。然后比较使用B的bind方法 和不使用 B的bind方法的区别。

B 类

class B():
    @staticmethod
    def bind(instance):
        cls = type(instance)
        for name, obj in cls.__dict__.items():
            """ __dict__ 获取这个对象的所有属性"""
            if type(obj) is B:
                """如果检测到该 instance 中有BoundClass类属性
                    则设置相同的实例属性。
                """
                #得到类属性的值
                bound_class_obj = getattr(instance, name)
                #设置实例属性
                setattr(instance, name, bound_class_obj)

A 类

class A():
    """ 实例化B类作为A的类属性"""    
    b = B()

    def __init__(self):
        self.name = "B"

    """ 使用 B 类的bind函数"""
    def use_bind(self):
        B.bind(self)

    """ 为了方便对比写了一个打印对象属性的函数"""
    def check(self):
        for key, v in self.__dict__.items():
            print(key, v)

测试

    print("使用bind函数")
    a1 = A()
    a1.use_bind()
    a1.check()
    print("============")
    print("不使用bind函数")
    a2 = A()
    a2.check()
    print("============)

执行结果

使用bind函数
属性名:name     属性值:B
属性名:b     属性值:<__main__.B object at 0x000001F4674E4D30>
============
不使用bind函数
属性名:name     属性值:B
============

结果分析

可以从结果中看到,使用了bind 函数之后将类属性绑定到了实例对象上,以提高性能。

python 类属性绑定到类的实例属性

原文:https://www.cnblogs.com/zihaoyf/p/15033839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!