不可逆な毎日ブログ

2度と過ごすことのない毎日をつらつらと・・・

継承とか

会社でやったときは動かなかったんだけど・・・

>>> class A(object):
...   def __init__(self):
...     print "class a init"
...
>>> class B(A):
...   def __init__(self):
...     print "class b init"
...     super(B, self).__init__(self)
...
>>> b = B()
class b init
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in __init__
TypeError: __init__() takes exactly 1 argument (2 given)

できるようなこと、書かれているんだけど、できない。
と思ったら、できた。エラーをよく見ろ、ですな。反省...

>>> class A(object):
...   def __init__(self):
...     print "class a init"
...
>>> class B(A):
...   def __init__(self):
...     print "class b init"
...     super(B, self).__init__()
...
>>> b = B()
class b init
class a init
>>> class A(object):
...   def __init__(self):
...     print "a class"
...   def methodA(self):
...     print "methodA"
...
>>> class B(A):
...   def __init__(self):
...     print "b class"
...   def methodA(self):
...     super(B,self).methodA()
...
>>> b = B()
b class
>>> b.methodA()
methodA

みんなのPython

みんなのPython