【发布时间】:2019-05-27 15:32:15
【问题描述】:
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
【问题讨论】:
-
你想解决什么问题?
-
将属性默认为同一方法的许多替代实现之一,以便在类中重用
-
查看编辑可能有帮助吗?
-
传递给
__init__的func应该是func1还是func2? -
@TianboJi 是的 func 只能是多个选项中的任何一个
标签: python-3.x class oop default-value