Я проверял наследование питона, у меня есть это:Почему мой подкласс python не распознает атрибут из суперкласса?
__metaclass__=type
class b:
def __init__(s):
s.hungry=True
def eat(s):
if(s.hungry):
print "I'm hungry"
else:
print "I'm not hungry"
class d(b):
def __init__(s):
super(b,s).__init__()
def __mysec__(s):
print "secret!"
obj=d()
obj.eat()
Там же ошибка времени выполнения, как:
Traceback (most recent call last):
File "2.py", line 17, in ?
obj.eat()
File "2.py", line 6, in eat
if(s.hungry):
AttributeError: 'd' object has no attribute 'hungry'
Я не мог этого понять, как супер класс «б» имеет s.hungry в своем init, а подкласс класса «супер» внутри своего собственного «init« Почему все-таки python говорит, что объект «d» не имеет атрибута «голодный»?
Другая путаница: сообщение об ошибке относится к «d» как к объекту, но я определил его как класс! Я получил что-то не так, как заставить его работать?
Используйте 'super' на текущий класс, а не родительский класс. то есть 'super (d, s) .__ init __()' – mVChr
Кроме того, я настоятельно рекомендую не использовать однобуквенные имена в Python. Я предлагаю прочитать https://www.python.org/dev/peps/pep-0008/ – mVChr
super() в python3 очень просто, вам не нужны pass args. –