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():
pass
def func2():
pass
任何人都可以建议如何实现上述目标吗?
我也尝试在构造函数中将func参数设置为默认值func2,但这也会出错。
因此,稍后,在Test类中的某个地方,我可以调用self.func而不是反复运行条件来确定是否应使用func1或func2
self.func()
答案 0 :(得分:0)
您可以根据__init__
参数的值在func
方法中设置默认值:
也许是这样的:
class Test:
def __init__(self, func=None):
if func is None:
self.func = self.func2
else:
self.func = func
def func1():
pass
def func2():
pass
答案 1 :(得分:0)
如果您不使用self
(未定义),并且将其移到类定义的末尾,那么您的代码将在类范围内工作,这样{{1} }在运行时将存在于命名空间中。
func2
我会注意到,当您将函数分配给类变量时,它将像方法一样对待,因此您可能需要更改class Test:
def __init__(self, func=None):
if func is not None:
self.func = func
def func1():
pass
def func2():
pass
func = func2 # this will work down here
才能期望func2
作为其第一个参数。对于分配为实例变量的方法,例如传递给self
方法的任何func
,绑定行为都不会发生。如果您想要针对这些行为绑定行为,则需要自己实现(也许使用__init__
)。