在使用 Python 的时候,是面向对象多点呢还是面向过程多点? - V2EX
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 7266 次点击
    这是一个创建于 3208 天前的主题,其中的信息可能已经有所发展或是发生改变。
    跟同事一起写过一个 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     Solana     958 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 19:25 PVG 03:25 LAX 12:25 JFK 15:25
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86