关于使用__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"
这是正确的解决方案吗?
答案 0 :(得分:3)
所以基本上你想从子类中的父类运行__init__
:
class B(A):
def __init__(self, paramNumber, paramString):
super(B, self).__init__(param1=1, param2=2)
# the other code goes here