首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中初始化上下文中的对象

在Python中初始化上下文中的对象
EN

Stack Overflow用户
提问于 2015-12-03 23:53:12
回答 2查看 646关注 0票数 0

这看起来是一个微不足道的问题,但我真的很感激能得到一些帮助。也许它也能帮助其他人理解初始化。

我正在实现的东西,在某些情况下,将获得给定时间段的市场数据,计算回报,然后,稍后,当这段代码将工作时,将计算投资组合中的最佳权重。

现在,我在这个阶段遇到了一些问题:

代码语言:javascript
复制
import pandas.io.data as web
import datetime

class Black_Litterman:

    def initialize(context):

        context.start = datetime.datetime(2015, 1, 1)
        context.end = datetime.datetime(2015, 1, 28)

        # Select five large cap equities for the portfolio
        # Apple, Google, GE, Microsoft, Amazon
        # later, these should be read in from a csv file stored elsewhere
        context.securities = ['AAPL', 'GOOGL', 'GE', 'MSFT', 'AMZN']
        context.market_cap = [479.51, 377.58, 272.76, 300.86, 180.96]
        context.cap_wts = np.array(context.market_cap)/sum(np.array(context.market_cap))

        # Set Max and Min positions in security
        context.max_notional = 1000000.1
        context.min_notional = -1000000.0

    def get_data(context, data):

        all_prices = []
        cont_start_str = (context.start).strftime("%Y-%m-%d")
        cont_end_str = (context.end).strftime("%Y-%m-%d")

        for i in context.securities:
            f = web.DataReader(i, 'google', context.start, context.end)
            all_prices.append(f.ix[cont_start_str : cont_end_str, 'Open'])

        # Drop missing values and transpose matrix
        daily_returns = all_prices.pct_change().dropna().values.T

当我尝试的时候

代码语言:javascript
复制
cont = Black_Litterman()
Black_Litterman.get_data(cont, 0)

我得到了

代码语言:javascript
复制
AttributeError: Black_Litterman instance has no attribute 'start'

这意味着即使cont是这个类的实例,它也不是用初始参数初始化的。有没有办法初始化它(不同于传统的(初始化( self,start,end,...) )?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-04 00:09:39

很抱歉给您带来了混乱!我现在明白了。我要做的就是打电话给

代码语言:javascript
复制
cont = Black_Litterman()

cont.initialize()

只有到那时

代码语言:javascript
复制
Black_Litterman.get_data(cont, 0) 

谢谢!

票数 0
EN

Stack Overflow用户

发布于 2015-12-04 00:07:10

我真的不明白,你到底想做什么,但是我用python来初始化默认参数的类的实例,你应该这样做:

代码语言:javascript
复制
class Black_Litterman:

    def __init__(self):

        self.start = datetime.datetime(2015, 1, 1)
        self.end = datetime.datetime(2015, 1, 28)
        ....

    def get_data(self, data):

        all_prices = []
        cont_start_str = self.start.strftime("%Y-%m-%d")
        cont_end_str = self.end.strftime("%Y-%m-%d")

        ...
# Use it like this
bl_instance = Black_Litterman()
bl_instance.get_data(data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34070389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档