NLP 方向的研究生请教站内 Python 编程前辈对实验代码的编写指点迷津

16 天前
 StevenXobs

如题。本人本身对 Python 语言很喜欢,阅读过《流程的 Python 》、《 Python 工匠》,尝试过钻研一些 Python 的进阶特性,但本人本身是学生,没有任何业务实战经验,只会调一些机器学习、深度学习常用的库,例如 Pandas 、PyTorch 、Transformers 。

一直对面向对象的思想很着迷,了解过 SOLID 原则,平时写代码也会训练自己注意这些,但不熟悉 23 种设计模式,只略有耳闻。平时写代码,喜欢把代码封装成类。但是总觉得自己在“自嗨”,每次把一些代码封装并调试好之后,都有一种失落感,好像自己什么也没干。

感觉很多 Python 的读物,都教了 Python“面向对象”的知识,但我始终不知道,什么时候该用“面向对象”,以及为什么要用“面向对象”。

问题描述的可能不太完整,但希望站内的大佬不吝赐教,感谢!

1951 次点击
所在节点    Python
24 条回复
laike9m
15 天前
其实核心就一条:

当你发现某些数据和函数经常需要同时被使用,那就用面向对象。
一个对象说到底就是封装了数据以及数据的操作(方法)的命名空间。

忘掉设计模式,尤其是忘掉继承,因为大多时候你根本不需要继承。
FINCTIVE
15 天前
推荐一下《软件设计的哲学》这本书(作者是斯坦福教授、Tcl 语言发明者)。有在线版,很好读,很容易读。

类似这样的问题,不同人有不同的观点。这本书的讨论深度对我真的很有启发。
visper
15 天前
你都已经知道 solid 原则了。剩下就是自己的抽象能力了。其实所有各种设计模式说白了,都是为了一个目标:以后修改代码或者功能的时候,一是尽量少动原来的代码,二是动部分的时候不会影响原来的。 剩下的其实用不用类用不用继承这些,不大重要。有些人觉得用起来很厉害,然后实现一个功能的时候封装了十层八层。到头来别人一看都不知道看在哪里。特别是像 python 这样的动态类型语言,idea 跳转之类的没有 java 这么强的话,保持代码量少更重要一点吧个人感觉。 不要过度设计,不要提前优化。
visper
15 天前
另外,个人感觉研究 ml 算法这些的学生,应该对函数式编程更感兴趣一点而不是面向对象编程。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1127037

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX