这出现在 Python的隐藏功能中,但我看不到可以解释该功能如何工作的好文档或示例.
如果未将明确值传递给方法,我想用一些默认值初始化方法的参数 - 如下所示:
class Example
def __init__(self, data = self.default_data()):
self.data = data
def default_data():
# ....
return something
Run Code Online (Sandbox Code Playgroud)
我收到了错误:
NameError: name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
基本上是这样的:
DEFAULT_TIMEOUT = 10
# or even: from my_settings import DEFAULT_TIMEOUT
def get_google(timeout=DEFAULT_TIMEOUT):
return requests.get('google.com', timeout=timeout)
Run Code Online (Sandbox Code Playgroud)
我认为只要常数确实保持不变,就应该可以正常工作。但我有时会看到这样的模式:
DEFAULT_TIMEOUT = 10
def get_google(timeout=None):
if timeout is None:
timeout = DEFAULT_TIMEOUT
return requests.get('google.com', timeout=timeout)
Run Code Online (Sandbox Code Playgroud)
这些是等效的还是我应该更喜欢其中一个?