簡體   English   中英

__init__:是否將__init__參數(dict)繼承到另一個類的__init__方法?

[英]__init__ : Inheriting __init__ parameter (dict) to another class's __init__ method?

即使檢查了許多在SO中提出的問題,我也感到困惑。 我有2個不同的類(2個不同的腳本),我想繼承超類的__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 >調用3rd類,與傳遞“ params”相同。 可能嗎?

這是您需要的嗎?

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...

您可以將子類的__init__()中的所有非關鍵字參數傳遞給超類,如下所示:

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

同樣的想法也適用於其他方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM