在python中使用__init__和继承

时间:2013-12-23 09:35:14

标签: python class inheritance ironpython

关于使用__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 ?他们是不同的“自我”

编辑: 我也应该使用超级吗?

    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"

这是正确的解决方案吗?

1 个答案:

答案 0 :(得分:3)

所以基本上你想从子类中的父类运行__init__

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