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
jingniao
V2EX  ›  Python

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

  •  
  •   jingniao · 2016-12-31 08:23:07 +08:00 via Android · 6864 次点击
    这是一个创建于 2917 天前的主题,其中的信息可能已经有所发展或是发生改变。
    跟同事一起写过一个 Python ,项目,他的风格是面向对象,喜欢封装成一个类,一个类里有 10 多个类变量, 30 多类方法,还有类之间嵌套:在一个类里成员变量是另外一个类实例。
    我因为入门是 pascal 跟 c 这种,面向过程已经成习惯了,一般是一堆函数,外加一小部分很小的类。
    大家习惯用哪种?
    主流是哪种?
    36 条回复    2017-01-02 19:36:52 +08:00
    gino86
        1
    gino86  
       2016-12-31 08:56:21 +08:00
    如果方法之间的联系比较大,可以封装成一个类,如果关系不大的话,可以把函数封装在一个模块里面,我是这样理解的。
    yanchao7511461
        2
    yanchao7511461  
       2016-12-31 09:02:20 +08:00
    只要不是为了完成一件小事,比如扫描文件类型,处理单个文本这种。都是面向对象方便的多
    janxin
        3
    janxin  
       2016-12-31 09:27:01 +08:00
    面向工资最多 XD
    简单的工作面向过程直接处理比较多
    一般大型项目更倾向面向对象,以后重构要不然要改死
    hugo775128583
        4
    hugo775128583  
       2016-12-31 09:39:21 +08:00 via Android   ❤️ 1
    我一般面向我对象多一点
    eloah
        5
    eloah  
       2016-12-31 09:58:38 +08:00 via Android
    使用 Python 的时候难道不是到处都在面向对象吗 Doge
    BingoXuan
        6
    BingoXuan  
       2016-12-31 10:13:11 +08:00 via iPhone
    做数据处理的,面向过程多一点。
    phrack
        7
    phrack  
       2016-12-31 10:18:19 +08:00 via Android
    你一大堆函数应该也是根据一定的相关性分布到不同文件的吧,如果是这样处理的话那实际上是隐含一点面向对象的。

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

    大项目的话还是面向对象比较好。
    yiyiwa
        9
    yiyiwa  
       2016-12-31 11:01:58 +08:00
    没折腾过面向对象, 一直过程。
    PythonAnswer
        10
    PythonAnswer  
       2016-12-31 11:05:51 +08:00   ❤️ 3
    面向过程,快糙猛,爽啊。

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

    面向过程在多人协同的时候,有点痛苦。
    SeanLin
        35
    SeanLin  
       2017-01-02 10:05:09 +08:00
    取决你是'python hello.py' 还是'ipython In[1]: print 'hello world' '
    yaoliyc
        36
    yaoliyc  
       2017-01-02 19:36:52 +08:00 via Android
    面向工资。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3075 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:20 · PVG 21:20 · LAX 05:20 · JFK 08:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.