在python中使用初始化和继承

2024-09-30 20:32:51 发布

您现在位置: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"

这是正确的解决方案吗?你知道吗


Tags: testselfinitdefclassparam1super班级
1条回答
网友
1楼 · 发布于 2024-09-30 20:32:51

所以基本上您希望从子类中的父类运行__init__

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

相关问题 更多 >