सजाए गए वर्ग को उप-वर्गीकृत करना - अजगर, उप-वर्ग, सजावट, मेटाक्लास

आप एक सजाए गए वर्ग को कैसे वर्गीकृत करेंगे? यहां कुछ कोड है, मुझे लगता है कि मुझे कुछ आसान याद आना चाहिए

def decorator_with_args(*args, **kwargs):
def decorator(cls):
def wrapper(*wargs, **wkwargs):
print("wargs", wargs, wkwargs)
return cls(*wargs, **wkwargs)

return wrapper

return decorator


@decorator_with_args()
class MyClass(object):
def __init__(self, *args, **kwargs):
print("args", args, kwargs)


class MySubClass(MyClass):
pass


myClass = MyClass("arg", kwarg="kwarg")

यह उठाएगा TypeError संकलन समय पर

Traceback (most recent call last):
File "/path/to/file", line 46, in <module>
class MySubClass(MyClass):
TypeError: function() argument 1 must be code, not str

उत्तर:

उत्तर № 1 के लिए 1

आप सजावटी गलत है। यह एक समारोह के बजाय एक वर्ग लौटाना चाहिए।

def decorator_with_args(*args, **kwargs):
def decorator(cls):
class Wrapper(cls):
def __init__(self, *wargs, **wkwargs):
print(wargs, wkwargs)

return Wrapper

return decorator

संबंधित सवाल
सबसे लोकप्रिय