有看一下 python 面向对象编程指南,内容对于我有点难了, 然后去看了设计模式,有一些收货还是解放迷茫 现在写代码还是那种写一堆函数然后 class 包起来 感觉自己依旧没有丝毫入门对象的迹象 求求大佬指点一下怎么入门对象啊
1
westoy 2022-08-29 23:57:39 +08:00
多写, 有了具体业务自然会有抽象和复用的需求, 也就自然会明白了, 没需求光看看不明白的
|
2
LindsayZhou 2022-08-30 00:05:04 +08:00
找个漂亮的,不太大开源项目啃完。
我现在在看 fastpi/starlette 的源码,fastapi 是从 starlette 继承来的,Route Middleware App 之类的包装个人觉得还可以,只是看起来 fastapi 的作者不太喜欢写注释。 |
4
shinonome OP @LindsayZhou 我喵喵,写写大佬
|
5
yucongo 2022-08-30 01:06:08 +08:00 via Android
写个小 gui 工具差不多就入门面向对象了
|
6
LeeReamond 2022-08-30 04:09:13 +08:00
你不需要看设计模式,python 既有全局变量这种东西,又有一等公民函数,又不是写 JAVA
|
7
oakcdrom 2022-08-30 07:56:26 +08:00
虽然我也用的少。。。我连 class 都不用。 一切 def
|
8
whywaoxaks 2022-08-30 08:05:32 +08:00
看需求。完全没必要强行搞对象。
|
9
joApioVVx4M4X6Rf 2022-08-30 10:08:38 +08:00
同问
|
10
HiCode 2022-08-30 11:03:03 +08:00
现有业务,再有针对实际业务需求的抽象,最后才是面向对象的实现。
强行为了面向对象而面向对象,是某些 javaer 的最爱。 |
11
anonymousar 2022-08-30 11:12:04 +08:00
多态 /泛型 是核 xin 内容。 想深入了解还是从 cpp 入手比较好。另外上面这些拿个 class 说面向对象的, 真的写过代码?
|
12
DOLLOR 2022-08-30 11:18:46 +08:00 via Android
靠 Python 深入面向对象是不太合适的。
如果想深入面向对象的“精髓”,还是靠 Java 比较合适。 当然不必强求面向对象、面向 class 开发,能解决问题才是最重要的。 |
13
warcraft1236 2022-08-30 11:36:51 +08:00
看几个 Python 的优秀的库就行了,比如 requests 之类的
|
14
arischow 2022-08-30 11:39:04 +08:00 via iPhone
Python 的面向对象还要结合它的 data model 来理解
|
15
anjiannian 2022-08-30 11:48:09 +08:00 via Android
对,楼上有人说了,看优秀的库,requests ,flask
|
16
elboble 2022-08-30 12:38:02 +08:00 via Android
看视频学的 django ,学到 restframework ,从 apiview 到 viewset ,一系列抽象,真是看的男默女泪
|
17
ospider 2022-08-30 13:52:45 +08:00 1
@warcraft1236 requests 除了 API 设计,哪方面也和优秀挂不上钩……
|
18
shinonome OP 感谢大家,我去找一点简单的项目了
|
19
lanlanye 2022-08-30 15:55:34 +08:00
我觉得简单一点从抽象考虑,如果你需要把一组方法和数据放在一起,那就会自然地使用面向对象,否则别强上,没必要。
|
20
ipwx 2022-08-30 16:00:14 +08:00
现在通常所说的设计模式 OOP ,最佳实现模版就是 Java 那一套。当然结果大家都知道了,纯 OOP 单继承的设计模式就是又臭又长,虽然对于规范良莠不齐的团队开发很有用。
Python 一般情况下都不是纯粹的 OOP ,Pythonic 是一种混合了函数式、命令式和 OOP 的特殊形式,形成了它自己特有的写法。一般来说相同的功能,Pythonic 写起来还挺简洁的。——当然,也不绝对。 ---- 总之按楼主的初学者属性,用 Python 去对照设计模式容易走火入魔。要么忘记“设计模式”去体会 Pythonic ,要么扔掉 Python 去学习设计模式。 |
21
abersheeran 2022-08-30 16:34:29 +08:00
当你不确定是不是需要用 class 的时候就别用 class 。一味的追求面向对象是 Java 之流的糟粕。
另外不推荐看楼上说的 Starlette 学习面向对象 @LindsayZhou 。它理念很好, 但……。比如说,它的 Response 基类设计非常糟糕,绝大部分子类都会重写一部分它的方法,这违反了面向对象编程里“尽量不要重写父类方法”的原则。别的还有很多,我就不一一列举了。可以看看这个做一个对比,https://github.com/abersheeran/baize/blob/master/baize/wsgi/responses.py |
22
hahaba 2022-08-30 18:48:08 +08:00
尽量面向函数,而不是对象
|
23
evil0harry 2022-08-30 21:00:16 +08:00
我读了 django 的源码,收益颇丰。
|
24
lambdaq 2022-08-30 21:05:09 +08:00
面向对象一般都是在 GUI 和游戏编程里用。
你遇到类似需求自然就理解了。 |
25
warcraft1236 2022-08-31 08:51:55 +08:00
@ospider 不优秀的点在哪
|