Czy ktoś mógłby pokazać prosty przykład tego? Staram się osiągnąć to, co zostało zaimplementowane w Pythonie 2.6 używając PEP 3129 wyjątkiem stosowania klasy nie funkcje, jak Bruce Eckel wyjaśnia herepython: udekoruj klasę definiując dekoratora jako klasę
następujące prace:
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
wyjątkiem, w powyższym wrappedClass nie jest klasa, ale funkcja manipulowana, aby zwrócić typ klasy. Chciałbym napisać to samo, co:
def __call__(self, cls):
class wrappedClass(cls):
def __init__(self):
... some code here ...
return wrappedClass
Jak to zrobić? EDIT: Nie jestem do końca pewien, co dzieje się "" "... jakiś kod tutaj ... """
Czy próbowałeś sam napisanego kodu? Powinno działać. –
Pierwsza część korzystająca z funkcji działa. Jak jednak napisać wrappedClass jako prawdziwą klasę? – tsps
Co powinien zrobić twój dekorator? Nie mogę powiedzieć, jaki kod musi przejść do "jakiegoś kodu tutaj", nie wiedząc, co ten kod ma zrobić. –