ここでクラス継承を使用できます。継承を使用すると、別のオブジェクトに基づいてオブジェクトを作成し、そのすべての機能と属性を継承できます。
この場合、次のようになります。
class A(object):
def foo(self):
print "blah"
class B(A):
# You can add new methods or attributes here,
# or even overwrite those inherited from A if you
# really want to, though you have to be careful with that.
pass
その宣言の後、
>>> B().foo()
"blah"
これが機能する理由は次のとおりです。
- クラス
A
を作成し、そのためのメソッドを作成しましたfoo
。
- あなたはから
B
継承するクラスを作成しました。A
つまり、A
「それを生んだ」とき、持っB
ているすべてのもので生まれましたA
。
- 私たちの場合、は、他に何もしなかったので、
B
の正確なコピーです。A
ただし、変更を加えたり、メソッドを追加したりすることはできます。
例:
class A(object):
def foo(self):
print "blah"
class B(A):
def newfoo(self):
print "class A can't do this!"
どちらを使用すると、次のように表示されます。
>>> A().foo()
blah
>>> B().foo()
blah
>>> A().newfoo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'newfoo'
>>> B().newfoo()
class A can't do this!
特に、上記のコードが機能しなかった理由は、設定しようとしたときにB.foo
、
class B(object):
foo = A.foo
それ以外の
class B(object):
foo = A().foo
A.foo
なしで書いたとき、あなたは型()
から直接メソッドを求めていましたが、これはPythonでは機能しません。行う場合は、オブジェクトをインスタンス化し、そのメソッドのコピーを取得して、それを割り当てることです。 A
foo = A().foo
A
foo