在辅助方法中将 self 作为参数传递

Posted

技术标签:

【中文标题】在辅助方法中将 self 作为参数传递【英文标题】:passing self as an argument in a helper method 【发布时间】:2012-02-07 11:33:30 【问题描述】:

我正在处理一个类,并试图从类中调用一个辅助方法。我得到了下面的代码,但我不确定为什么当我在方法中已经有“self”作为参数时调用它时必须将“self”作为参数传递给辅助函数。当我在下面的示例中调用 Frequency.__helper(self, record) 时,是否有理由将其作为参数传递?

谢谢!

class Frequency:

    def __init__(self, record):
        self.record = record

    def __helper(self, datalist)
        do something to datalist...

    def getFreq(self):
        allrec = self.record
        record = allrec[1].split(' ')
        var = Frequency.__helper(self, record)
        return var

【问题讨论】:

【参考方案1】:

调用方法的正确方式只是

var = self.__helper(record)

这做同样的事情,但以更直观的方式。

【讨论】:

【参考方案2】:

是的,在这种情况下您必须这样做,因为您没有将函数声明为@staticmethod。当一个方法不是静态的时,它需要一个实例来传递。

如果你这样做:

class Frequency:
    @staticmethod
    def test(datalist):
        pass

您不需要将 self 定义到参数列表中。

【讨论】:

以上是关于在辅助方法中将 self 作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

如何在python类中将方法名称作为参数传递

在 C 中将多维数组作为参数传递

如何在 Java 中将类型作为方法参数传递

在 Ruby 中将方法作为参数传递

在 Postman 中将类对象作为参数传递

在 PHP 中将实例方法作为参数传递