python-3.x - 将函数调用调度到对象集合
问题描述
我不确定问题的标题是否正确。
我正在努力实现以下目标。
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()
应该调用foo2
和。我想是类似的东西。a1
a2
np.vectorize
这个潜力SomeFoo
(类或函数)会被称为什么?
更重要的是,什么是好的写作方式SomeFoo
?
更新
用和替换print
和。printB
foo1
foo2
解决方案
有点不清楚你想要达到什么目标,但我猜我猜。
每次调用A()
都会创建一个实例。您正在尝试做的事情要求每个实例彼此了解——即,它们具有类共有的属性。
例子:
class A():
members={}
def __init__(self, name, func=lambda e: print(self.name)):
self.name = name
self.members[name]=func
def __del__(self):
del self.members[self.name]
def do_all(self):
for k, func in self.members.items():
print(k)
func()
a=A('a1', lambda: print('I am the great and powerful OZ'))
b=A('b1', lambda: print('paCHOO!'))
b.do_all()
在实践中:
a=A('a1', lambda: print('I am the great and powerful OZ'))
b=A('b1', lambda: print('paCHOO!'))
b.do_all()
印刷:
a1
I am the great and powerful OZ
b1
paCHOO!
推荐阅读
- git - Github - 合并被阻止(混淆/误导性错误消息)
- git - Git:签出以前的提交并在该提交创建的分支中工作
- .net-core - .net core 3.1升级后Azure函数本地调试报错
- c++ - C++ 函数返回一个反转的 char 数组
- javascript - discord.js TypeError:server.roles.find 不是函数
- python - 获取函数之前的返回语句
- python - 如何过滤无 utf-8 HTML 以获得 utf-8 HTML?
- c# - 解析小数时出现FormatException
- c++ - 继承和构造函数| C++
- google-apps-script - 功能重复