Closed LucienShui closed 3 years ago
呃,我还没有这么强迫症
_COMMAND_HANDLERS
作为类属性才是合理的,又不会跟着实例变化
呃,我还没有这么强迫症
_COMMAND_HANDLERS
作为类属性才是合理的,又不会跟着实例变化
首先,我不认为这是强迫症。
其次,我认为 _COMMAND_HANDLERS
作为实例的变量更合理一些,原因有四:
_COMMAND_HANDLERS
的内容,通过继承的方式去取代 copy()
会更平滑。_COMMAND_HANDLERS
的内容,在实例方法中变更类变量是很奇怪的。lambda
中要引用 “外部实例” 的私有函数,也是很别扭的。Sample Code:
class Super:
DICT = {
"Hello": "World!"
}
def print(self):
print(*list(self.DICT.items())[0])
def modify(self):
self.DICT['Hello'] = 'Python'
class SubClass(Super):
DICT = Super.DICT.copy()
def main():
for obj in [Super(), SubClass()]:
obj.print()
obj.modify()
obj.print()
print('-' * 3)
Super().print()
if __name__ == '__main__':
main()
Output:
Hello World!
Hello Python
---
Hello World!
Hello Python
---
Hello Python
修改_COMMAND_HANDLERS
唯一的原因就是我不想看到一堆未知命令的日志,算是偷懒的方法,其他时候就当它是个常量
改掉了一些 PyCharm 的 Warning。