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 · 5298 次点击
    这是一个创建于 3772 天前的主题,其中的信息可能已经有所发展或是发生改变。
    事情由来:
    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   ·   实用小工具   ·   5314 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 165ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.