Python重载变量赋值

 840126054贝尔 发布于 2023-01-01 13:19

我有类定义

class A(object):
    def __init__(self):
        self.content = u''
        self.checksum = hashlib.md5(self.content.encode('utf-8'))

现在,当我更改self.content时,我希望self.checksum会自动计算.我想象中的东西会是

ob = A()
ob.content = 'Hello world' # self.checksum = '3df39ed933434ddf'
ob.content = 'Stackoverflow' # self.checksum = '1458iabd4883838c'

那有什么神奇的功能吗?或者是否有任何事件驱动方法?任何帮助,将不胜感激.

1 个回答
  • 使用Python @property

    例:

    import hashlib
    
    class A(object):
    
        def __init__(self):
            self._content = u''
    
        @property
        def content(self):
            return self._content
    
        @content.setter
        def content(self, value):
            self._content = value
            self.checksum = hashlib.md5(self._content.encode('utf-8'))
    

    这种方式当你"设置值" .content(恰好是属性)时,你.checksum将成为"setter"函数的一部分.

    这是Python 数据描述符协议的一部分.

    2023-01-01 13:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有