import threading
class A:
def func(self):
print('asdf')
class B(A):
def func(self):
print('1234')
class C(A):
def func(self):
print('xyzw')
def f(inner_func):
class_list = [A(),B(),C()]
thread_list = []
for i in class_list:
x=threading.Thread(target=inner_func(i,),args=())
thread_list.append(x)
x.start()
for i in thread_list:
i.join()
f(A.func)
我以为这会打印
asdf
1234
xyzw
但它只是打印
asdf
asdf
asdf
如何一次使用继承类的函数,而不需要手动操作?
我认为您可以通过将函数名称作为字符串传递来实现这一点,使用:
getattr(类,函数名(
import threading
class A:
def func(self):
print('asdf')
class B:
def func(self):
print('1234')
class C:
def func(self):
print('xyzw')
def f(inner_func):
class_list = [A(), B(), C()]
thread_list = []
for i in class_list:
x = threading.Thread(target=getattr(i, inner_func), args=())
thread_list.append(x)
x.start()
for i in thread_list:
i.join()
f('func')