”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何向字典条目等类添加动态属性?

如何向字典条目等类添加动态属性?

发布于2024-11-08
浏览:813

How to Add Dynamic Properties to Classes like Dictionary Entries?

向类添加动态属性

在使用模拟类模拟数据库结果集的过程中,出现了一个挑战:如何分配动态属性实例的属性类似于字典的属性。这涉及创建行为类似于具有特定值的属性的属性。

最初,一种有前景的方法涉及使用以下方式分配属性:

setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))

然而,这产生了属性对象,而不是所需的行为。

解决方案在于向类添加属性本身,而不是个别实例。它的工作原理如下:

class Foo(object):
    pass

foo = Foo()
foo.a = 3
Foo.b = property(lambda self: self.a   1)
print(foo.b)  # Prints 4

在此示例中,我们使用属性描述符向 Foo 类添加属性 b。当访问 foo.b 时,Python 调用描述符的 __get__ 方法并将类实例作为参数传递。然后 __get__ 方法返回属性的值,该值计算为 self.a 1。

属性提供了一种方便的方法来定义属性的自定义行为,有效地公开了 Python OO 系统的管道。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3