【发布时间】:2025-11-27 20:45:02
【问题描述】:
我需要将来自不同类的不同实例的两个方法合并到一个类的单个实例中。
例如我定义了两个类:
class A:
def __init__(self):
self.name = "a"
def print_name(self):
print(self.name)
class B:
def __init__(self):
self.name = "b"
def print_name(self):
print(self.name)
然后我会尝试制作另一个对象 c 并且它的 print_name 方法必须返回 a.print_name() 和 b.print_name() 的结果,所以我尝试了以下操作:
a = A()
b = B()
c = A()
c.name = "c"
c.print_name_1 = a.print_name
c.print_name_2 = b.print_name
def final_print(self):
self.print_name_1()
self.print_name_2()
c.print_name = MethodType(final_print, c)
c.print_name()
预期输出:
c
c
但我明白了:
a
b
我尝试按照here 的描述使用 types.MethodType,但它创建了某种带有两个参数的方法:第一个是“a”实例,第二个是“c”实例。
有什么帮助可以正确地做到这一点吗?
【问题讨论】:
-
在每个实例的基础上覆盖方法违背了拥有一个类的目的,即为类的所有实例提供一个统一接口。
-
我的目标是通过合并另外两个对象来创建一个新对象,我不知道如何用另一种方式做到这一点
-
应该
c是A的一个实例,还是真的应该是一个new 类的实例?另外,A和B真的需要是单独的类吗,或者a和b可以是同一个类的实例,只是name属性的值不同? -
所以a,b,c继承自同一个类,我们称它为
Parent,但它们是不同的类,不同的方法
标签: python class methods instance