Python OOP:创建一个对象,该对象是多个 类 的实例

Python OOP: create an object that is an instance of multiple classes

假设我构建了一些包含一些实例方法的 classes:

class A:
    def func_of_A(self):
        print("foo")

class B:
    def func_of_B(self):
        print("bar")

我如何构建一个 object/variable cAB 的实例,以便我可以同时调用 c.func_of_A()c.func_of_B()?

我当然可以构建一个新的 class 继承自 AB 并使 c 成为其中的一员:

class C(A,B):
    pass

c = C()

但这不是我要找的。我不想在每次计划使用已构建的组合时创建一个新的 class。

我还可以创建一个函数来动态定义一个新的 class 和 return 它的一个实例:

def merge(*inherit_from):
    class D(*inherit_from):
        pass
    return D()

c = merge(A,B)

但这不是诅咒,因为现在 merge(A,B)merge(A)merge(B) 都是 return 相同的类型 <class '__main__.merge.<locals>.D'>

应该有一个预期的方法来做到这一点,不是吗?

是否有一种解决方案可以很好地适应所涉及的 classes 的数量?如果我已经有 class A1, class A2, ..., class A100 并且我想构造一些 c 作为 class A2, class A23, class A72, class A99 的实例而不是其他实例我该怎么做?给定 ~2^100 种组合,为每种组合创建新的 class 几乎是不可能的。

您可以使用 type() 作为 @deceze 提到的

>>> class A:
...     def a():
...         pass
... 
>>> class B:
...     def b():
...         pass
... 
>>> def merge(name: str, *parents):
...     return type(name, parents, dict())
... 
>>> C = merge("C", A, B)
>>> C.a()
>>> C.b()
>>>