誰かがこの簡単な例を示してください。上記では、wrappedClassはないが、除きpython:デコレータをクラスとして定義してクラスをデコレートしてください
class Decorator(object):
def __init__(self, arg):
self.arg = arg
def __call__(self, cls):
def wrappedClass(*args):
return cls(*args)
return type("TestClass", (cls,), dict(newMethod=self.newMethod, classattr=self.arg))
def newMethod(self, value):
return value * 2
@Decorator("decorated class")
class TestClass(object):
def __init__(self):
self.name = "TestClass"
print "init %s"%self.name
def TestMethodInTestClass(self):
print "test method in test class"
def newMethod(self, value):
return value * 3
:私はブルースEckel氏は、here
次作品を説明しているようなクラスではない機能を使用することを除いてPEP 3129を使ってPython 2.6で実装されてきたものを達成しようとしていますクラス型を返すように操作された関数です。私は次のように同じ呼び出し可能コードを書いています:
def __call__(self, cls):
class wrappedClass(cls):
def __init__(self):
... some code here ...
return wrappedClass
これはどうでしょうか? EDIT:私はに入るものを全くわからないんだけど "" "...ここにいくつかのコード... """
自分で投稿したコードを試しましたか?それは動作するはずです。 –
機能を使用する最初の部分は機能しません。しかし、wrappedClassを本物のクラスとしてどのように書くのですか? – tsps
あなたのデコレータは何をすべきですか?私は、このコードが何をすべきかを知らずに、どのコードが「ここのコード」に入っているのかを伝えることはできません。 –