在 Python 中将类属性作为该类的函数的参数传递

abe*_*ger 4 python python-2.7

正如标题所示,我试图将我的类的一个属性作为同一个类的函数的参数传递。在下面的示例中, 的功能是默认print_top_n()打印self.topn,但如果需要,也可以使用不同的值调用该函数。这是Python(或一般编程)犯规还是有办法做到这一点?

>>> class Example():
    def __init__(self, topn=5):
        self.topn = topn
    def print_top_n(self, n=self.topn):
        print n



Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    class Example():
  File "<pyshell#7>", line 4, in Example
    def print_top_n(self, n=self.topn):
NameError: name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 9

在创建类时创建方法,并在创建方法时设置默认值(请参阅此问题/答案)——在调用函数时不会重新计算它们。换句话说,这一切发生在self创建之前很久(因此NameError)。

典型的方法是使用您可以在其中检查的标记值print_top_n(None是最常见的)。

def print_top_n(self, n=None):
    n = self.topn if n is None else n
    print n
Run Code Online (Sandbox Code Playgroud)