ここでクラス継承を使用できます。継承を使用すると、別のオブジェクトに基づいてオブジェクトを作成し、そのすべての機能と属性を継承できます。
この場合、次のようになります。
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().fooAfoo