Я немного смущен относительно использования __init__
и наследования и хотел бы получить некоторую помощь.Использование __init__ и наследования в python
У меня есть класс [который не может быть изменен]:
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()
Моя проблема начинается здесь: Я хочу использовать Class 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 ?
они разные "selfs"
Редактирование: Должен ли я использовать супер?
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"
Это правильное решение?
они одинаковы 'self', но вы забыли назвать' .__ init__' создать '.x 'и' .y' – Eric
Не называйте 'A .__ init__' непосредственно, как упоминает Эрик. Используйте [super] (http://docs.python.org/2/library/functions.html#super). – wim
так что подождите - мне нужно добавить в свой «def __init __ (self, paramNumber, paramString) после установки этой инициализации, также супер ?? – user1386966