V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
shinonome
V2EX  ›  Python

Python 如何入门面向对象呢

  •  
  •   shinonome · 101 天前 · 3133 次点击
    这是一个创建于 101 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    ----

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

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

    你遇到类似需求自然就理解了。
    warcraft1236
        25
    warcraft1236  
       100 天前
    @ospider 不优秀的点在哪
    shinonome
        26
    shinonome  
    OP
       99 天前
    @xunbug 主要感觉一直都是面向函数的,一直听面向对象,但是一直没能理解,所以想看看
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3939 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 10:09 · PVG 18:09 · LAX 02:09 · JFK 05:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.