我怎么能给线程一个低级函数呢


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')

最新更新