Python成员变量作为参数

问题描述 投票:1回答:1

我有一个带有成员函数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个回答
3
投票

一种选择是将默认的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
© www.soinside.com 2019 - 2024. All rights reserved.