【问题标题】:Python member variable as parameterPython 成员变量作为参数
【发布时间】:2017-02-17 02:36:07
【问题描述】:

我有一个类 A 和一个成员函数 a 和一个参数 p 和一个默认值。我希望这个默认值是类的成员变量。

class A:
   def a(self, p = self.b):
       print p

但是它与信息崩溃了:

<ipython-input-2-a0639d7525d3> in A()
      1 class A:
----> 2     def a(self, p = self.b):
      3         print p
      4

NameError: name 'self' is not defined

我想知道是否可以将成员变量作为默认参数传递给成员函数?

【问题讨论】:

    标签: python function class variables default-value


    【解决方案1】:

    一种选择是将默认 p 值设置为 None 并在方法本身中检查其值:

    class A:
        def __init__(self, b):
            self.b = b
    
        def a(self, p=None):
            if p is None:
                p = self.b
            print(p)
    

    演示:

    In [1]: class A:
        ...:     def __init__(self, b):
        ...:         self.b = b
        ...: 
        ...:     def a(self, p=None):
        ...:         if p is None:
        ...:             p = self.b
        ...:         print(p)
        ...:         
    
    In [2]: a = A(10)
    
    In [3]: a.a()
    10
    
    In [4]: a.a(12)
    12
    

    【讨论】:

    • 我有几个参数,不想一一判断。这可以包装成一个函数吗?一个问题是,如果它们被扭曲成一个函数,值变量就不能在函数中设置。
    • @maple 好的,是的,这并不能很好地扩展。您是否希望所有方法参数都具有相同的 self.b 默认值?谢谢。
    • 我希望它们有不同的默认值,并且可以在函数中设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2020-11-27
    • 2016-11-15
    • 2021-08-05
    相关资源
    最近更新 更多