python - del on field from vars(instance) 从对象中删除属性
问题描述
我注意到一个非常奇怪的行为:
class Aclass:
def __init__(self, time: int, contract: Contract, strategy: str = 'Strategy') -> None:
self.time: int = time
self.contract: Contract = contract
self.strategy: str = strategy
def to_dict(self) -> Dict:
basic = vars(self)
# I don't want this in the result
del basic['contract']
return basic
if __name__ == '__main__':
inst = Aclass(123, Contract())
inst_dict = inst.to_dict()
inst.contract # AttributeError: 'Aclass' object has no attribute 'contract'
我收到上述书面属性错误...任何想法为什么会发生这种情况?
如果我使用vars(self).copy()
一切正常。
解决方案
vars(self)
__dict__
根据以下文档返回属性。返回的字典存储了对象实例的所有属性。因此,删除其中一个条目 viadel
等同于删除对象实例的属性。
如果要在vars(self)
不影响对象实例的情况下返回修改后的对象,则需要执行复制。
推荐阅读
- swift - 有没有办法打印 NFCISO7816APDU 生成的 APDU 命令
- python - 如何在python中简化有关迭代组合的代码
- amazon-web-services - AWS Config:即使存在“名称”标签,所需标签的自定义规则也会显示“无标签”
- plc - PLC“程序计数器”概念
- javascript - javascript转换成父子数组
- jquery - dayclick不显示模式弹出窗口
- r - 将文本文件保存在 R 包的数据文件夹中
- go - 类型实现中的隐藏方法?
- apache-kafka - 消费者在运行生产者和消费者 python 脚本时没有显示消息
- swift - 使用 userID 写入数据并使用 userID 读取数据