python - 使用当前类实例的属性作为方法参数的默认值

标签 python function default default-parameters

Possible Duplicate:
default value of parameter as result of instance method

虽然可以在 python 中为函数参数设置默认值:

def my_function(param_one='default')
    ...

似乎无法访问当前实例(self):

class MyClass(..):

    def my_function(self, param_one=self.one_of_the_vars):
        ...

我的问题:

  • 我无法访问当前实例来设置函数中的默认参数是真的吗?
  • 如果不可能:原因是什么?是否可以想象在未来的 python 版本中这将成为可能?

最佳答案

写成:

def my_function(self, param_one=None): # Or custom sentinel if None is vaild
    if param_one is None:
        param_one = self.one_of_the_vars

而且我认为可以肯定地说这在 Python 中永远不会发生,因为 self 在函数启动之前并不真正存在......(你不能引用它,在它自己的定义 - 就像其他一切一样)

例如:你不能这样做 d = {'x': 3, 'y': d['x'] * 5}

关于python - 使用当前类实例的属性作为方法参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13195989/

相关文章:

mysql - 如果未找到任何内容,则返回默认行

c++ - 如果 std::make_unique 从未被调用,为什么在默认成员初始化中不需要参数?

python - 如何迭代创建嵌套字典?

python - 对 .dat 文件的两列进行一些数学计算并将结果保存到第三列

javascript - 在 Javascript 中对范围内的每个元素求和

JavaScript:完全旋转一个字符串,然后在给定数字输入的另​​一个方向上旋转该字符串

android - 以编程方式阻止Android上的默认按钮声音

android - 如何继承MonkeyDevice?

python - 正则表达式在一行中以 CAPITAL 单词开始和结束,在 CAPITAL 单行单词中有几行

javascript - 如何通过调用JS函数从弹出窗口重新加载父窗口?