2016-06-10 8 views
0

Учитывая класс с именем DataStreamAccess атрибут иерархии классов

class DataStream(object): 
    def __init__(self): 
     self.start = start 
     self.input_val = input_val 

и класс с именем InDataStream:

class InDataStream(DataStream): 
    def __init__(self): 
     super(InDataStream, self).__init__() 
     self.ready = ready 

stream = InDataStream() 

Я хочу отправить DataStream часть stream в функцию, что-то вроде:

function(stream.DataStream) 

Есть ли хороший способ выполнить эту задачу?

+1

Это не имеет никакого смысла, 'stream' (или любой' InDataStream') не имеет * * DataStream', он ** является ** 'DataStream'. – jonrsharpe

+1

Вы спрашиваете, как отсортировать «InDataStream» в «DataStream» и скрывать его свойства «InDataStream»? почему ты хочешь сделать это? Это звучит как проблема [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – rrauenza

+0

Я вроде хочу использовать 'indatastream' как' datastream', пренебрегая его атрибут 'ready'. Я хочу отправить часть потока данных indatastream в функцию. – vikram9866

ответ

0

Если вы хотите, чтобы получить доступ к экземпляру DataStream из экземпляра класса InDataStream, то вы можете рассмотреть возможность использования композиции вместо наследования:

class InDataStream(object): 
    def __init__(self): 
     self.ready = ready 
     self.datastream = DataStream() 

Тогда вы можете сделать:

stream = InDataStream() 
function(stream.datastream) 
+0

Спасибо ... Я полностью упустил из виду, что мне не хватало этого ... Решено :) – vikram9866

+0

В любом случае это может быть достигнуто без изменения структуры класса? – vikram9866