我可以在self
的方法定义中使用python
参数吗?
class Test:
def __init__(self, path):
self.path = pathlib.Path(path)
def lol(self, destination=self.path):
x = do_stuff(destination)
return x
我可以制作def lol(self, destination)
并以test_obj.lol(test_obj.path)
的方式使用它。但是,是否可以将默认destination arg
设置为self.path
?下面以另一种方式发布(基于this answers),但是我可以以某种方式重构它并使它更优雅吗?也许在python3。+版本中有新的解决方案。
def lol(self, destination=None):
if destination in None:
destination = self.path
x = do_stuff(destination)
return x
答案 0 :(得分:2)
我如何重构代码:
def func_test(self, destination=None):
return do_stuff(destination or self.path)
以上是最干净最危险的。 -一种最理想的情况,您知道该值,并且or
非常合适。 -否则粗心使用它。
否则,我会选择:
def func_test(self, destination=None):
return do_stuff(destination if destination is not None else self.path)
关于将self.property
传递给函数参数;只是没有。
答案 1 :(得分:2)
不。
这会导致问题,因为self.Path
可能会在运行时发生变化。
但是默认参数都是在创建时评估的。
因此,目的地始终是一个静态值,随时可能与self.Path
不同。
编辑:
请参阅Why are default arguments evaluated at definition time in Python?