python3默认类属性为同一类中的方法

洛文·戴尔(Loveen Dyall)
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

Reblochon面膜

您可以__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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章