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
kzing
V2EX    Python

Python 中使用类的最佳时刻是什么?

  •  1
     
  •   kzing 2014-07-30 22:18:56 +08:00 5628 次点击
    这是一个创建于 4094 天前的主题,其中的信息可能已经有所发展或是发生改变。
    事情由来:
    1. 写一个 rest 接口异步发送短信认证码
    2. 我将整个接口封装在了一个类里.
    3. 但我们老大说这样的实现太嗦, 于是去掉了类, 直接将所有函数直接暴露在最顶层.
    4. ... ...

    看过许多开源代码都是以类为单位组织的, 那是不是意味着:
    1. 当我们需要实现某个功能的时候, 最好都是以类来组织呢?
    2. 如果暂且不考虑类的其它特性, 仅考虑它作为一个函数的整合, 它是不是优于直接在模块顶层定义函数呢?
    10 条回复    2014-08-05 16:17:19 +08:00
    mengzhuo
        1
    mengzhuo  
       2014-07-30 22:58:19 +08:00
    写了2年Python,我现在的做法是,
    刚开始的时候都散着,需要复用的时候再封装

    这么做是因为web开发中,
    很多功能都是逗逼的产品经理/某部门头头拍脑袋想出来的,没准再也不会有人用的
    hahastudio
        2
    hahastudio  
       2014-07-30 23:21:55 +08:00   2
    因为 Python 并不是强制面向对象的,所以很多时候会有这样的疑问。
    这里我找到了一篇文章:When should I use classes?
    虽然是 04 年的,但也有些帮助:
    http://kentsjohnson.com/stories/00014.html

    我个人的意见:
    顶大了两个函数,暴露在顶层,去实现同一个功能,而且这个功能一般也就是辅助工具向的,不会承载很大的业务逻辑
    看上去你说的貌似不只两个,如果这些函数再需要一些共用的上下文的话= =妥妥的包装成类啊= =
    ipconfiger
        3
    ipconfiger  
       2014-07-30 23:22:59 +08:00   1
    你可以这么认为,一个.py文件就是一个singleton的类
    csx163
        4
    csx163  
       2014-07-30 23:43:34 +08:00
    要给别人套着用的时候.... 以后用得着的时候...
    ffffwh
        6
    ffffwh  
       2014-07-31 02:02:31 +08:00
    在需要多态的时候
    ddzz
        7
    ddzz  
       2014-07-31 09:14:02 +08:00
    python一个文件就是一个命名空间,一个文件夹加上一个__init__.py就是一个包,不要用java的思维来衡量python。python的命名空间是做的最好的
    heqing
        8
    heqing  
       2014-07-31 11:36:17 +08:00
    两个以上的函数,之间有数据共享,就应该使用类来封装;借用《C++深思录》中一句话,用类来表示概念。
    kzing
        9
    kzing  
    OP
       2014-07-31 20:34:10 +08:00
    @heqing 恩, 当遇到多个数据复用时, 的确用类比较好.
    adoraj
        10
    adoraj  
       2014-08-05 16:17:19 +08:00
    @mengzhuo 说的太经典的,赞一个。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     986 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:40 PVG 06:40 LAX 15:40 JFK 18:40
    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