首页 > 解决方案 > python3默认类属性到同一类中的方法

问题描述

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.func 成功调用 t.func1(或 t.func2,如果指定)并访问 t instance_attributes

标签: python-3.xclassoopdefault-value

解决方案


您可以__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

推荐阅读