2016-08-17 2 views
0

Я смущен даже после проверки многих вопросов, заданных в SO. У меня есть 2 разных класса (2 разных сценария) & Я хочу наследовать параметры метода суперкласса __init__.__init__: Унаследовать параметр __init__ (dict) к методу __init__ другого класса?

script1.py

class MainClass(): 
    def __init__(self,params): 
     self.one=params['ONE'] 
     self.two=params['TWO'] 
     self.three=params['THREE'] 
     self.four=params['FOUR'] 
     self.five=params['FIVE'] 

    def a(): 
     #--------- 
     #somecode 
     #Initializing other class's object to access it's method. 
     s=SubClass() #HERE I WANT TO PASS 'PARAMS' (WHICH IS A DICTIONARY) 
     s.method1(....) 

script2.py

class SubClass(SuperClass): 
    def __init__(self,params): 
     #Here I want all the parameters inside the 'param' in super class. 
     #(one,two,three...., etc). 
     #By checking some SO questions, I changed class SubClass() --> 
     #class Subclass(SuperClass) & below line: 
     MainClass.__init__(self,params) #But technically I don't have anything 
             #in param in subclass. 

    def method1(): 
     #some code... 

Поскольку пары юга класса не имеет ничего, он дает мне ошибку:

self.one=params['ONE'] 
TypeError: 'int' object has no attribute '__getitem__' 

Я не являюсь получение:

  1. Как я могу получить доступ ко всем параметрам суперкласса к подклассу самым простым способом? Я не хочу передавать индивидуальные аргументы (например, self.one, self.two ..) в подкласс.

  2. Если я звоню третьему классу внутри SubClass ->method1 -> Вызывайте 3-й класс так же, как и 'params'. Является ли это возможным?

+1

У меня возникли проблемы с пониманием того, чего вы хотите. Не могли бы вы привести примеры кода для того, как вы хотите инициализировать и взаимодействовать с 'SubClass'? – Karin

+0

Что такое SuperClass? –

+0

'def __init __ (self, * args, ** kwargs): MainClass .__ init __ (self, * args, ** kwargs)'? –

ответ

0

Это то, что вам нужно?

script1.py

class MainClass(): 
    def __init__(self,params): 
     # Save params for use by a 
     self.params = params 
     self.one=params['ONE'] 
     self.two=params['TWO'] 
     ... 
     self.five=params['FIVE'] 

    def a(): 
     s=SubClass(self.params) 
     s.method1(...) 

script2.py

class SubClass(SuperClass): 
    def __init__(self,params): 
     MainClass.__init__(self,params) 

    def method1(): 
     #some code... 
0

Вы можете передавать любые и все не именованные аргументы из подкласса __init__() к суперкласса, как это:

class SubClass(SuperClass): 
    def __init__(self, *params): 
     MainClass.__init__(self, *params) 
     ... 

Эта же идея будет работать и для других методов.

+0

Dave: Пожалуйста, прочитайте [_Что делать, если кто-то отвечает на мой вопрос? _] (Http://stackoverflow.com/help/someone-answers). – martineau

Смежные вопросы