2017-04-16 4 views
0

私はPythonの初心者ですが、Javaでは、通常、オブジェクトがどこから来ているかを正確に示すこれらのインポートを持っています。例えば、以下のimport文はSpringBootApplicationオブジェクトは春のブートクラスから直接来て、私はそのすべてのメソッドのコードを読み取るために、クラスに飛び込むことができます私に語った:ziplineに使用されるメソッドのpythonコードはどこですか?

import org.springframework.boot.autoconfigure.SpringBootApplication; 

今私はジップラインの図書館で探していますパイソン:

https://github.com/quantopian/zipline

これが彼らのGitHubリポジトリのメインページに自分のサンプルコードからである:

from zipline.api import (
    history, 
    order_target, 
    record, 
    symbol, 
) 

私は、これらのメソッドを駆動している基になるコードを読みたいので、メソッドhistory, order_target, record, symbolがインポートされるAPIファイルがあるかどうかを調べるためにziplineフォルダを見ています。

コードはずっと(https://github.com/quantopian/zipline/blob/master/zipline/api.py)を教えていません:

from .finance.asset_restrictions import (
    Restriction, 
    StaticRestrictions, 
    HistoricalRestrictions, 
    RESTRICTION_STATES, 
) 
from .finance import commission, execution, slippage, cancel_policy 
from .finance.cancel_policy import (
    NeverCancel, 
    EODCancel 
) 
from .finance.slippage import (
    FixedSlippage, 
    VolumeShareSlippage, 
) 
from .utils import math_utils, events 
from .utils.events import (
    date_rules, 
    time_rules 
) 

__all__ = [ 
    'EODCancel', 
    'FixedSlippage', 
    'NeverCancel', 
    'VolumeShareSlippage', 
    'Restriction', 
    'StaticRestrictions', 
    'HistoricalRestrictions', 
    'RESTRICTION_STATES', 
    'cancel_policy', 
    'commission', 
    'date_rules', 
    'events', 
    'execution', 
    'math_utils', 
    'slippage', 
    'time_rules' 
] 

をしかし、方法は私が行うに興味があるかについて、いくつかのテキスト(https://github.com/quantopian/zipline/blob/master/zipline/api.pyi)が含まれているようだapi.pyiというファイルがあります。例えば、方法recordと、それは言う:

def record(*args, **kwargs): 
    """Track and record values each day. 

    Parameters 
    ---------- 
    **kwargs 
     The names and values to record. 

    Notes 
    ----- 
    These values will appear in the performance packets and the performance 
    dataframe passed to ``analyze`` and returned from 
    :func:`~zipline.run_algorithm`. 
    """ 

私は多分コードがzipline.run_algorithm内に座っていたと思ったともzipline/run_algorithmファイルを探していたが、レポでそれを見つけることができませんでした。

pythonでこれらのメソッドのために保存されたコードはどこにありますか?私はちょうどそれがどのように動作するのかをより良く理解するために、コードを読んでみたいです。

+0

Javaでの作業は少し経験があります。 Pythonでは、オブジェクトを検査してその場所を判断することができます。たとえば、モジュールをインポートすると、 'import test'が実行され、' test .__ file__'はモジュール 'test'が存在するディレクトリを与えます。パッケージや他のすべてのオブジェクトと同じですが、すべてに対応する組み込み属性があり、そのオブジェクトに関する何らかの情報が得られます。 'dir(object)'は多くの詳細を返します。 – direprobs

答えて

3

ziplineは、やや複雑で珍しいインポート構造を使用しています。手がかりはapi.pyでこのコメントにあります。

# Note that part of the API is implemented in TradingAlgorithm as 
# methods (e.g. order). These are added to this namespace via the 
# decorator ``api_method`` inside of algorithm.py. 

あなたはalgorithm.pyで見れば、あなたがこれらのrecord@api_methodデコレータで定義されたこれらのメソッドの残りの部分を見ることができます。 (zipline/utils/api_support.pyを見ると、setattrを使用して、これらのメソッドをzipline.apiに追加するデコレータのコードが表示されます。

関連する問題