python实现一个类拥有其他所有类的方法,不使用继承
时间: 2024-08-16 15:05:52 浏览: 101
在Python中,如果你想要一个类拥有其他所有类的方法但不使用继承,可以使用组合(Composition)的方式,即将那些类的对象作为成员变量存储在你的类中。你可以创建一个独立的`Wrapper`类,这个类包含对其他类实例的操作。例如:
```python
class MethodWrapper:
def __init__(self):
self.methods = [
getattr(Class1(), "method_name"),
getattr(Class2(), "method_name"),
# 添加更多类和方法...
]
def invoke_method(self, method_name, *args, **kwargs):
for method in self.methods:
if hasattr(method, method_name):
return method(*args, **kwargs)
raise ValueError(f"No such method {method_name} found.")
# 使用示例
class Class1:
def method_name(self, arg1):
print(f"Class1: {arg1}")
class Class2:
def method_name(self, arg2):
print(f"Class2: {arg2}")
wrapper = MethodWrapper()
wrapper.invoke_method("method_name", "Value1") # 类似于调用了Class1或Class2的method_name方法
```
在这个例子中,`MethodWrapper`类不直接继承自`Class1`或`Class2`,而是通过`getattr`获取它们的方法并存储起来,然后提供统一的`invoke_method`方法来间接调用。
阅读全文