运行下面的代码会引发以下异常:
ERROR!
Traceback (most recent call last):
File "<string>", line 22, in <module>
TypeError: MyDecorator.__init__() takes 2 positional arguments but 4 were given
>
当从类子类派生的对象被实例化时,我希望访问从我的修饰器代码中提供给构造函数的所有参数.我之前不得不停止,因为我当前的代码 destruct 了继承.有谁能为我指引正确的方向吗?
class MyDecorator:
def __init__(self, original_class):
self.original_class = original_class
def __call__(self, *args, **kwargs):
instance = self.original_class(*args, **kwargs)
print(f"Decorator: Creating instance with arguments: {args}, {kwargs}")
return instance
def __getattr__(self, name):
# Pass through attribute access to the original class
return getattr(self.original_class, name)
@MyDecorator
class BaseClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
class SubClass(BaseClass):
def additional_method(self):
print("Additional method in SubClass")
# Creating an instance of the decorated base class
base_instance = BaseClass("foo", arg2="bar")
print(f"arg1: {base_instance.arg1}, arg2: {base_instance.arg2}")
# Creating an instance of the decorated subclass
sub_instance = SubClass("baz", arg2="qux")
print(f"arg1: {sub_instance.arg1}, arg2: {sub_instance.arg2}")
# Accessing additional method in the subclass
sub_instance.additional_method()