如何从类变量中调用函数方法[重复]

Posted

技术标签:

【中文标题】如何从类变量中调用函数方法[重复]【英文标题】:How to call method of function from class variable [duplicate] 【发布时间】:2020-06-10 18:17:43 【问题描述】:

我有课

class Test(object):
    @staticmethod
    def f(str):
      print(str)
    a = f('aaa')

如何正确操作?我有'staticmethod' object is not callable 错误。 classmethod 属性也会出错。请不要建议课外打电话,我希望它以这种方式实现。

【问题讨论】:

这能回答你的问题吗? Calling class staticmethod within the class body? 【参考方案1】:

来自documentation:

它可以在类(例如 C.f())或实例(例如 C().f())上调用。该实例被忽略,除了它的类。

所以你需要在类中的另一个函数中调用它,或者从类中创建一个对象实例。 例如:

class Test(object):

    def __init__(self):
        self.a = self.f('aaa')

    @staticmethod
    def f(str):
      print(str)

【讨论】:

请编辑您的答案,并附上代码 sn-p 的文字说明,并解释它是如何回答问题的【参考方案2】:

要从类内部调用它,请使用 self 关键字。

a = self.f('aaa')

【讨论】:

self 在 Python 中不是关键字【参考方案3】:
class Test(object):
   @staticmethod
   def f(str):
     print(str)
   a = f.__func__('aaa')

更多详情请参阅'staticmethod' object is not callable。

【讨论】:

以上是关于如何从类变量中调用函数方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python - 从类调用函数时出错[重复]

调用函数从类返回私有变量不起作用

为啥从类构造函数调用的方法应该是最终的? [复制]

python如何从类体内调用静态方法[重复]

从类中调用函数时抛出NullObjectReference

我的函数独立工作,但不能从类中调用