推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
shimeow
V2EX  ›  Python

Python 如何入门面向对象呢

  •  
  •   shimeow · Aug 29, 2022 · 5296 views
    This topic created in 1534 days ago, the information mentioned may be changed or developed.

    有看一下 python 面向对象编程指南,内容对于我有点难了, 然后去看了设计模式,有一些收货还是解放迷茫 现在写代码还是那种写一堆函数然后 class 包起来 感觉自己依旧没有丝毫入门对象的迹象 求求大佬指点一下怎么入门对象啊

    26 replies  •  2022-08-31 18:53:39 +08:00
    westoy
    westoy
    Aug 29, 2022
    1
    多写, 有了具体业务自然会有抽象和复用的需求, 也就自然会明白了, 没需求光看看不明白的
    LindsayZhou
    LindsayZhou
    Aug 30, 2022
    2
    找个漂亮的,不太大开源项目啃完。
    我现在在看 fastpi/starlette 的源码,fastapi 是从 starlette 继承来的,Route Middleware App 之类的包装个人觉得还可以,只是看起来 fastapi 的作者不太喜欢写注释。
    shimeow
    shimeow
    OP
    Aug 30, 2022 via Android
    3
    @westoy 唔,确实没需求,所以不知道怎么下手,大佬有推荐 简单的项目吗
    shimeow
    shimeow
    OP
    Aug 30, 2022 via Android
    4
    @LindsayZhou 我喵喵,写写大佬
    yucongo
    yucongo
    Aug 30, 2022 via Android
    5
    写个小 gui 工具差不多就入门面向对象了
    LeeReamond
    LeeReamond
    Aug 30, 2022
    6
    你不需要看设计模式,python 既有全局变量这种东西,又有一等公民函数,又不是写 JAVA
    oakcdrom
    oakcdrom
    Aug 30, 2022
    7
    虽然我也用的少。。。我连 class 都不用。 一切 def
    whywaoxaks
    whywaoxaks
    Aug 30, 2022
    8
    看需求。完全没必要强行搞对象。
    joApioVVx4M4X6Rf
    joApioVVx4M4X6Rf
    Aug 30, 2022
    9
    同问
    Q4h7388nR28s95fa
    Q4h7388nR28s95fa
    Aug 30, 2022
    10
    现有业务,再有针对实际业务需求的抽象,最后才是面向对象的实现。

    强行为了面向对象而面向对象,是某些 javaer 的最爱。
    anonymousar
    anonymousar
    Aug 30, 2022
    11
    多态 /泛型 是核 xin 内容。 想深入了解还是从 cpp 入手比较好。另外上面这些拿个 class 说面向对象的, 真的写过代码?
    AV1
    AV1
    Aug 30, 2022 via Android
    12
    靠 Python 深入面向对象是不太合适的。
    如果想深入面向对象的“精髓”,还是靠 Java 比较合适。
    当然不必强求面向对象、面向 class 开发,能解决问题才是最重要的。
    daiqiangbudainiu
    daiqiangbudainiu
    Aug 30, 2022
    13
    看几个 Python 的优秀的库就行了,比如 requests 之类的
    arischow
    arischow
    Aug 30, 2022 via iPhone
    14
    Python 的面向对象还要结合它的 data model 来理解
    anjiannian
    anjiannian
    Aug 30, 2022 via Android
    15
    对,楼上有人说了,看优秀的库,requests ,flask
    elboble
    elboble
    Aug 30, 2022 via Android
    16
    看视频学的 django ,学到 restframework ,从 apiview 到 viewset ,一系列抽象,真是看的男默女泪
    4BVL25L90W260T9U
    4BVL25L90W260T9U
    Aug 30, 2022❤️1
    17
    @warcraft1236 requests 除了 API 设计,哪方面也和优秀挂不上钩……
    shimeow
    shimeow
    OP
    Aug 30, 2022
    18
    感谢大家,我去找一点简单的项目了
    lanlanye
    lanlanye
    Aug 30, 2022
    19
    我觉得简单一点从抽象考虑,如果你需要把一组方法和数据放在一起,那就会自然地使用面向对象,否则别强上,没必要。
    ipwx
    ipwx
    Aug 30, 2022
    20
    现在通常所说的设计模式 OOP ,最佳实现模版就是 Java 那一套。当然结果大家都知道了,纯 OOP 单继承的设计模式就是又臭又长,虽然对于规范良莠不齐的团队开发很有用。

    Python 一般情况下都不是纯粹的 OOP ,Pythonic 是一种混合了函数式、命令式和 OOP 的特殊形式,形成了它自己特有的写法。一般来说相同的功能,Pythonic 写起来还挺简洁的。——当然,也不绝对。

    ----

    总之按楼主的初学者属性,用 Python 去对照设计模式容易走火入魔。要么忘记“设计模式”去体会 Pythonic ,要么扔掉 Python 去学习设计模式。
    abersheeran
    abersheeran
    Aug 30, 2022
    21
    当你不确定是不是需要用 class 的时候就别用 class 。一味的追求面向对象是 Java 之流的糟粕。

    另外不推荐看楼上说的 Starlette 学习面向对象 @LindsayZhou 。它理念很好, 但……。比如说,它的 Response 基类设计非常糟糕,绝大部分子类都会重写一部分它的方法,这违反了面向对象编程里“尽量不要重写父类方法”的原则。别的还有很多,我就不一一列举了。可以看看这个做一个对比,https://github.com/abersheeran/baize/blob/master/baize/wsgi/responses.py
    hahaba
    hahaba
    Aug 30, 2022
    22
    尽量面向函数,而不是对象
    evil0harry
    evil0harry
    Aug 30, 2022
    23
    我读了 django 的源码,收益颇丰。
    tf2
    tf2
    Aug 30, 2022
    24
    面向对象一般都是在 GUI 和游戏编程里用。

    你遇到类似需求自然就理解了。
    daiqiangbudainiu
    daiqiangbudainiu
    Aug 31, 2022
    25
    @ospider 不优秀的点在哪
    shimeow
    shimeow
    OP
    Aug 31, 2022
    26
    @xunbug 主要感觉一直都是面向函数的,一直听面向对象,但是一直没能理解,所以想看看
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2276 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 13:18 · PVG 21:18 · LAX 05:18 · JFK 08:18
    ♥ Do have faith in what you're doing.