推荐学习书目
› 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
ry_wang
V2EX  ›  Python

__init__使用疑惑

  •  
  •   ry_wang ·
    saipanno · Mar 22, 2012 via iPad · 5045 views
    This topic created in 5300 days ago, the information mentioned may be changed or developed.
    现在碰到这么个疑问:
    每个类实物初始化时会先进行一个远程的数据调用,此操作会有超时,调用结果作为后面多个类方法的数据源。且此调用每个类实物只能调用一次
    请问这种情况此调用操作适合加到哪里?记得有人说过__init__方法下不适合增加此类代码,最好只放置付值类代码。
    thanks.
    8 replies  •  1970-01-01 08:00:00 +08:00
    ayanamist
        1
    ayanamist  
       Mar 23, 2012
    请使用Builder模式,可以满足你的全部需求。
    ry_wang
        2
    ry_wang  
    OP
       Mar 23, 2012
    @ayanamist 看来是高端话题了,我去学习下,多谢
    ayanamist
        3
    ayanamist  
       Mar 23, 2012
    @ry_wang 写一个Builder类,初始化出一个Builder类,把所有的初始化参数用方法设定,接着写一个getInstance方法,返回一个数据类。在调用这个方法的时候可以用异常捕获超时,也可以很方便的实现单例保证只调用一次。这个数据类也可以直接传递到下游去使用。
    如果初始化参数不复杂,也可以直接用一个类的静态方法。
    ry_wang
        4
    ry_wang  
    OP
       Mar 27, 2012
    @ayanamist hi,不知道下面这个是不是你指的思路?

    git://gist.github.com/2214826.git
    ry_wang
        5
    ry_wang  
    OP
       Mar 27, 2012
    @ayanamist

    <script src="git://gist.github.com/2214826.git"></script>
    ayanamist
        6
    ayanamist  
       Mar 27, 2012
    rexren
        7
    rexren  
       May 11, 2012
    差不多就是factory pattern的思路
    phuslu
        8
    phuslu  
       May 11, 2012
    额,python标准库的手法一般是这样:
    def __init__(self): self._sock = None
    def connect(self): self._sock = socket.create_connection(...)
    def XXX_method(self): if self._sock is None: 在此raise Exception或者调用self.connect()
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2457 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:46 · PVG 23:46 · LAX 08:46 · JFK 11:46
    ♥ Do have faith in what you're doing.