簡體   English   中英

在Python中使用__init__和繼承

[英]Using __init__ and inheritance in python

對於使用__init__和繼承,我有些困惑,很想獲得一些幫助。

我有一個課程[無法更改]:

class A(object):
    def __init__(self, param1 = 7, param2 = 10):
        self.x = param1
        self.y = param2     
    def func1(self):
        op1()
        op2()
    def func2(self):
        pass

這是一些已編寫的類,在重載其功能時正在使用它:

class B(A):
    def func1(self)
        op3()
        op4()
    def func2(self)
        op5()

我的問題從這里開始:我想多次使用B類,並每次發送不同的參數:

---new .py file: ---
def myFunction():
    myInstance = B()

我想做這樣的事情:

def myFunction():
    myInstance = B(40,"test")

我以為添加到B類__init__但是問題是現在我不確定它將使用什么self :解釋:在B​​類內部,我想重載func2(self)我想寫:

class B(A):
    def __init__(self, paramNumber, paramString)
        self.paramNumber = paramNumber
        self.paramString = paramString

但是現在在func2(self) ,使用了什么self 新的那一個? 舊的? 能行嗎 這意味着我將擁有: self.x , self.y and self.paramNumber self.parmString ? 他們是不同的“自我”

編輯:我也應該使用super嗎?

    class B(A):
    def __init__(self, paramNumber, paramString,param1, param2)
        self.paramNumber = paramNumber
        self.paramString = paramString
        super(B,self).__init__(param1,param2)

    def myFunction():
       myInstance = B(40,"test")
       // I will get : self.x = 7
       // self.y= 10
       // self.paramNumber=40
       //self.paramString = "test"

這是正確的解決方案嗎?

因此,基本上,您想從child內的父類運行__init__

class B(A):
    def __init__(self, paramNumber, paramString):
        super(B, self).__init__(param1=1, param2=2)
        # the other code goes here

暫無
暫無

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

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