class Test:
func = self.func2 # default: func is func2 by default
# tried Test.func2 as well and Pycharm shows error
def __init__(self, func=None):
if func is not None:
self.func = func
def func1(self):
pass
def func2(self):
pass
任何人都可以建议如何实现上述目标吗?
我也尝试在构造函数中将func参数设置为默认值func2,但这也会出错。
所以稍后,在Test类中的某个地方,我可以调用self.func而不是反复运行条件来确定是否应使用func1或func2
self.func()
****解决方案(我做了什么)****
在main.py中:
t = Test(func=Test.func1)
t.func(t, **kwargs)
这应该成功调用t.func1(或t.func2,如果指定的话),并通过调用高阶方法t.func来访问t instance_attributes
您可以__init__
根据func
参数的值在方法中设置默认值:
也许是这样的:
class Test:
def __init__(self, func=None):
if func is None:
self.func = self.func2
else:
self.func = func
def func1():
print('func1')
def func2(self):
print('func2')
Test().func()
Test(Test.func1).func()
输出:
func2
func1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句