を継承することはできますか?たとえば、は魔法のようにをa_foobar_method
に適用しますか?はPythonでサブクラスは親クラスのデコレータ
class FooBar(Foo):
def a_foobar_method(self):
...
を継承することはできますか?たとえば、は魔法のようにをa_foobar_method
に適用しますか?はPythonでサブクラスは親クラスのデコレータ
class FooBar(Foo):
def a_foobar_method(self):
...
デコレータは、装飾されたクラスをどのような方法でも「マーク」しません。あなたは、単にFoo
自体を見ることで
@decorator
class Foo:
pass
または
class Foo:
pass
Foo = decorator(Foo)
を書いた場合は指示する方法はありません。デコレータは、使用時に適用された後、忘れられます。
要するに、
@my_decorator
class Foo(Resource): ...
あなたが今までFoo
を使用するだけの時間が一緒に、その後、コードのあなたの2枚をFooBar
を定義することであるならば、単純に
class Foo(Resource): ...
Foo = my_decorator(Foo)
の省略形です。このと同等です:
class Foo(Resource): ...
Foo_decorated = my_decorator(Foo)
class FooBar(Foo_decorated):
def a_foobar_method(self):
...
またはこれまで:
class Foo(Resource): ...
class FooBar(my_decorator(Foo)):
def a_foobar_method(self):
...
本当の答えはデコレータが何をするかによって異なります。原則として、クラスがオブジェクトとしてインスタンス化された後(例えば、__init__
メソッドを変更するため)、メソッドのリストを調べると、FooBar
のメソッドを見る機会が得られます。しかし、呼び出されたときにメソッドを実行してそれぞれに変更を加えると、FooBar
の余分なメソッド(または置き換えられたメソッド)には影響しません。
そのデコレータは 'Foo'のメソッドにも適用されません。 – user2357112
あなたはそれを試してみてみませんか? –