Разрешено в обоих направлениях (т. е. от private
до public
И от public
до private
).
С другой стороны, я бы сказал, что это не нарушить связь IS-A. Я основываю свой аргумент на двух фактах:
Base&
(или Base*
), у вас есть точно такой же интерфейс, что и до public
и вызов метода private
напрямую в любом случае: тот же эффект с большим количеством ввода Эквивалентно ответу Г. Б., но без толкования словаря, если вы еще не знакомы с ним.
import pandas as pd
import quandl
start = pd.to_datetime('2012-01-01')
end = pd.to_datetime('2017-01-01')
data = {}
for key in ['aapl', 'csco', 'ibm', 'amzn']:
name = 'WIKI/'+ key + '.11'
data[key] = quandl.get(name, start_date=start, end_date=end)
# Then you can use it like
data['aapl'].DoSomething()
Вы почти у цели! Все, что вам нужно сделать, это заключить элементы списка в строки.
Что вы делаете сейчас:
a = 'WIKI/'+ i + '.11' # Where i is an object, probably a pointer/instance
Что нужно сделать:
a = 'WIKI/'+ i + '.11' # Where i is a good-old-happy string
Итак, ваш код, ваш код должен выглядеть примерно так:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import quandl
start = pd.to_datetime('2012-01-01')
end = pd.to_datetime('2017-01-01')
# You have to add Strings to calculate i (But, you are adding objects)
L = ["aap1", "csco", "ibm", "amzn"]
L_i = []
for i in L:
a = 'WIKI/'+ i + '.11'
i = quandl.get(a, start_date=start, end_date=end)
# Then do whatever you want with the i-s : L_i.append(i)
inames = ['aapl', 'csco', 'ibm', 'amzn']
data = {name: quandl.get('WIKI/'+ name + '.11', start_date=start, end_date=end) for name in inames}