找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: alicia

[求助] 关于一些逻辑问题

[复制链接]
发表于 2022-8-19 15:32:40 | 显示全部楼层
Hmmm 我理解了
我给点小小的建议吧:
1. class中的类属性不应该大写(全大写的是常量),特别是你还在classmethod里面改了它
2. 类属性其实一般是外部修改的,而且一般不会改它,classmethod这样的用法很奇怪
3. Time类这个名字是让我误解的一个原因,因为有个time内置库,可以改名成GameTime类
4. 我感觉对于游戏时间您想做的是个闭包,但其实没必要这么做,把游戏时间写作GameTime类的私有实例属性未尝不可 (self._hour这种),类实例化成对象并不糟糕,可以直接当数据类型用
5. 我不是很清楚您想如何保存数据,以及不知道renpy支不支持直接的对象存储(/持久化),但是无论如何,游戏日志在实现的时候,唯一标识符(id)最好是int或者直接就是GameTime类的实例
5.1. 如果是GameTime类的实例,可以实现魔术方法,__eq__、__ge__、__gt__等等,这样在对象作为list的元素时就可以当做数值直接排序(当然也可以利用sort里面那个key的自定义函数来比大小)
5.2. 如果是GameTime类的实例,要放在dict中当key的话,还需要实现魔术方法__hash__、__eq__
6. 合理利用@property,像是上下午、早上中午下午这种东西都是可以实时计算出来的,没必要开个属性记录
7. 怕进位之类的问题,可以使用@property的@***.setter
7.1. 当然我发现,最小时间单位是分钟,那直接用一个变量记录分钟不就好了,类似于时间戳,外显时间通过计算得出
8. 实现魔术方法__str__、__format__后可以直接str()、format()了,虽然单独用个.gettime()也没啥问题

以上针对Time类,至于游戏日志,那办法太多了,直接int: str或者GameTime: GameNote直接塞进dict里面就行了(str: str也行的!),建个GameNoteDict类来管理日志条目分类等方法也行

等等看看别的dalao有什么好建议?
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2022-8-19 23:04:07 | 显示全部楼层
Lost 发表于 2022-8-19 15:32
Hmmm 我理解了
我给点小小的建议吧:
1. class中的类属性不应该大写(全大写的是常量),特别是你还在class ...

好的,谢谢大佬
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2024-12-22 16:30 , Processed in 0.123226 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表