V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · 4680 views
    This topic created in 5161 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   ·   Solana   ·   2796 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:39 · PVG 09:39 · LAX 18:39 · JFK 21:39
    ♥ Do have faith in what you're doing.