python - 每次与 Class 对象交互时,如何更新 Class 对象的属性?
问题描述
例如,我有一堂课:
from datetime import datetime
class Book:
def __init__(self, contents):
self.last_accessed = datetime.now()
self.content = contents
def add_content(self, addition):
self.content += str(addition)
def replace_content(self, replacement):
self.content = replacement
def read_content(self):
return self.content
我希望这个类能够记录最后一次访问 Book 的时间,例如:
Mybook = Book("Hello") # Last accessed = datetime.now()
Mybook.add_content(" World") # Last accessed = datetime.now(), which should be later than the previous datetime.now()
Mybook.read_content() # Last accessed should be later than when I added " World" to Mybook.content
我怎样才能使 Mybook.last_accessed 每次更改 Mybook 时都会更改?
提前致谢。
解决方案
from datetime import datetime
class Book:
def __init__(self, contents):
self.__update_datetime()
self.content = contents
def __update_datetime(self):
self.last_accessed = datetime.now()
def add_content(self, addition):
self.content += str(addition)
self.__update_datetime()
def replace_content(self, replacement):
self.content = replacement
self.__update_datetime()
def read_content(self):
self.__update_datetime()
return self.content
Mybook = Book("Hello")
print(Mybook.last_accessed) # 2020-07-03 10:17:25.596847
Mybook.add_content(" World")
print(Mybook.last_accessed) # 2020-07-03 10:17:25.596905
Mybook.read_content()
print(Mybook.last_accessed) # 2020-07-03 10:17:25.596917
推荐阅读
- swift - insertSubview() 覆盖整个 Mainview,即使在 0 处插入
- android - 与 Android 中的“普通”设置相比,“大”系统文本设置要大多少?
- node.js - 在 Sequelize 中更改 createdAt 的值?
- machine-learning - 第一个 epoch 后训练误差大幅下降
- node.js - Jest - 函数 fs.writefile 中的模拟回调
- java-stream - 使用 Java Streams 迭代两个相同的 Set
- opengl - 统一在 GLSL 中未正确加载,但硬编码值确实
- node.js - discord.js 的票务系统
- javascript - 图片上传错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义
- git - 当连续提交依赖于它时,如何知道恢复推送的 Git 提交的影响?