【发布时间】:2020-06-30 01:04:30
【问题描述】:
我不确定问题的标题是否正确。
我正在努力实现以下目标。
class A():
def __init__(self, name):
self.name = name
def foo1(self):
print(1, self.name)
def foo2(self):
print(2, self.name)
a1 = A('a1')
a1.foo1() # print '1, a1'
a2 = A('a2')
b = SomeFoo(a1, a2) # or, SomeFoo([a1, a2])
b.foo1() # calls a1.foo1(), a2.foo2()
同样,
b.foo2() 应该调用a1 和a2 的foo2。我猜np.vectorize 是类似的东西。
这个潜在的SomeFoo(类或函数)会被调用什么?
更重要的是,写SomeFoo的好方法是什么?
更新
将print 和printB 替换为foo1 和foo2。
【问题讨论】:
-
过去对类似问题的回答(例如Idiomatic way to call method on all objects in a list of objects Python 3)通常说只是为了使用for循环。另请参阅How to call same method for a list of objects?。
-
谢谢@DennisSparrow。我想
someFoo(a1, a2, a3, a4).bar()打电话给a1.bar(), ..., a4.bar()。我希望someFoo不需要声明bar。不确定是否可以不侵入类属性。 -
Dilawar,实际上,我想知道您是否正在寻找比您得到的答案更笼统的东西,所以很高兴您能澄清它。我的猜测是它不能完全按照你指定的方式完成,但是像
b.callMethod("foo1")这样的变体可能是可能的。
标签: python-3.x