V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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
jingniao
V2EX  ›  Python

在使用 Python 的时候,是面向对象多点呢还是面向过程多点?

  •  
  •   jingniao · Dec 31, 2016 via Android · 7621 views
    This topic created in 3405 days ago, the information mentioned may be changed or developed.
    跟同事一起写过一个 Python ,项目,他的风格是面向对象,喜欢封装成一个类,一个类里有 10 多个类变量, 30 多类方法,还有类之间嵌套:在一个类里成员变量是另外一个类实例。
    我因为入门是 pascal 跟 c 这种,面向过程已经成习惯了,一般是一堆函数,外加一小部分很小的类。
    大家习惯用哪种?
    主流是哪种?
    36 replies    2017-01-02 19:36:52 +08:00
    gino86
        1
    gino86  
       Dec 31, 2016
    如果方法之间的联系比较大,可以封装成一个类,如果关系不大的话,可以把函数封装在一个模块里面,我是这样理解的。
    yanchao7511461
        2
    yanchao7511461  
       Dec 31, 2016
    只要不是为了完成一件小事,比如扫描文件类型,处理单个文本这种。都是面向对象方便的多
    janxin
        3
    janxin  
       Dec 31, 2016
    面向工资最多 XD
    简单的工作面向过程直接处理比较多
    一般大型项目更倾向面向对象,以后重构要不然要改死
    hugo775128583
        4
    hugo775128583  
       Dec 31, 2016 via Android   ❤️ 1
    我一般面向我对象多一点
    eloah
        5
    eloah  
       Dec 31, 2016 via Android
    使用 Python 的时候难道不是到处都在面向对象吗 Doge
    BingoXuan
        6
    BingoXuan  
       Dec 31, 2016 via iPhone
    做数据处理的,面向过程多一点。
    phrack
        7
    phrack  
       Dec 31, 2016 via Android
    你一大堆函数应该也是根据一定的相关性分布到不同文件的吧,如果是这样处理的话那实际上是隐含一点面向对象的。

    如果管他什么函数全乱放一气,可以去死了•ᴗ•
    changwei
        8
    changwei  
       Dec 31, 2016 via Android
    其实小项目没必要太纠结是否是面向对象面向过程,因为 python 是可以划分模块的,不像 php 里面只能用类的静态方法来对函数进行分类聚合。如果强行面向对象,那么也就失去了 python 这种小脚本快速开发的优势了。

    大项目的话还是面向对象比较好。
    yiyiwa
        9
    yiyiwa  
       Dec 31, 2016
    没折腾过面向对象, 一直过程。
    PythonAnswer
        10
    PythonAnswer  
       Dec 31, 2016   ❤️ 3
    面向过程,快糙猛,爽啊。

    面向对象感觉戴了套。
    ionpick
        11
    ionpick  
       Dec 31, 2016
    用 Python 写程序没必要面向对象, Python 的优势就是用较少的代码量通过调用现成的库去完成任务。用 Python 去开发对象的话就失去了 Python 的优势,还不如用 Java 了
    iAcn
        12
    iAcn  
       Dec 31, 2016
    @PythonAnswer 这回复神了
    limbo0
        13
    limbo0  
       Dec 31, 2016   ❤️ 1
    对象一开始写的比较多, 后边方便了
    过程是一开始写的爽, 到后边蒙蔽了
    dslwind
        14
    dslwind  
       Dec 31, 2016 via Android
    面向 Google
    SuperMild
        15
    SuperMild  
       Dec 31, 2016
    一般上来先面向过程,快糙猛爽,后来快不行了才改成面向对象,感觉像戴了套。
    clino
        16
    clino  
       Dec 31, 2016 via Android
    需要的时候才用 class ,保持自然
    Osk
        17
    Osk  
       Dec 31, 2016
    面向 stackoverflow...
    fy
        18
    fy  
       Dec 31, 2016
    跟自己用 C++的思路基本一致: C with classes
    适合什么用什么
    owlsec
        19
    owlsec  
       Dec 31, 2016
    面向过程多,上来就干。
    exoticknight
        20
    exoticknight  
       Dec 31, 2016
    不纠结,复杂了自然就用面向对象重构
    21grams
        21
    21grams  
       Dec 31, 2016
    当然面向对象
    ldehai
        22
    ldehai  
       Dec 31, 2016
    @jingniao 主要看整个程序是否容易阅读和维护,找个平衡点。
    我之前重构过一个同事写的 C 程序,用的是函数式,功能是为了 P2P 下载的方便,把 mp4 文件流化,音、视频帧分片处理。我用 C++改成面向对象的了,结构和流程清晰了好多。
    Thoxvi
        23
    Thoxvi  
       Dec 31, 2016 via Android
    面相代码多一点(误)
    meta
        24
    meta  
       Dec 31, 2016 via iPhone
    你同事写那种,不是面向对象。
    muziyue
        25
    muziyue  
       Dec 31, 2016
    面向过程,不是做 python 的,写的都是小程序
    freestyle
        26
    freestyle  
       Dec 31, 2016
    代码长了就不得不面向对象了
    practicer
        27
    practicer  
       Dec 31, 2016
    我入门编程后第一个正式小项目 1500 行, 刚开始做的时候没封装成类, 到后面不得不用类来表达项目结构了, 转类后清晰了很多, 拓展起来更容易, 是一个数据项目
    Miy4mori
        28
    Miy4mori  
       Dec 31, 2016 via Android
    面向 deadline 多一点
    herozhang
        29
    herozhang  
       Dec 31, 2016 via iPhone
    200 行为分界点
    nicegoing
        30
    nicegoing  
       Dec 31, 2016 via Android
    分层,解耦,面向对象比较好。把有关联的方法数据封装在一起作为一个类,我觉得写起来思路清晰,长期来看写的快一点。如果是非常简单的项目,功能少,那就直接面向过程了。
    yche
        31
    yche  
       Jan 1, 2017
    简单的时候先面向过程,然后考虑怎么面向对象。比如说有许多相同参数要传递的时候,考虑做成类的成员变量;然后该`@staticmethod`的弄成 static ;然后我写的时候尽量考虑数据是怎么变化的,多用 map/reduce/filter 会比 for-loop 更让别人清除我的意图。
    luobuda
        32
    luobuda  
       Jan 1, 2017
    面向数据吧,数据值钱,代码不值钱
    geralt0725
        33
    geralt0725  
       Jan 1, 2017
    本人非常熟悉面向对象、架构模式还有领域驱动那一套
    然而现在真心不喜欢这些东西
    几句话简单明了的事情搞一坨没用的飞机干嘛?
    给自己找累,也给公司招聘接手找累
    lrh3321
        34
    lrh3321  
       Jan 1, 2017
    面向对象多一点

    面向过程在多人协同的时候,有点痛苦。
    SeanLin
        35
    SeanLin  
       Jan 2, 2017
    取决你是'python hello.py' 还是'ipython In[1]: print 'hello world' '
    yaoliyc
        36
    yaoliyc  
       Jan 2, 2017 via Android
    面向工资。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5780 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 135ms · UTC 06:40 · PVG 14:40 · LAX 23:40 · JFK 02:40
    ♥ Do have faith in what you're doing.