如何在具有自身的类中调用函数

时间:2018-06-29 17:18:30

标签: python

假设我有以下内容:

class myClass:
  def foo(self):
    # do something

如何在类内部调用myClass而不声明新的myClass对象?即我想要类似的东西

class myClass:
  def foo(self):
    # do something

  if __name__ == '__main__':
    # call foo

或不包含main

class myClass:
  def foo(self):
    # do something

  # call foo

现在,我不断收到未定义self的错误,或foo期望1参数但提供了0的错误。

2 个答案:

答案 0 :(得分:1)

您不能。该函数是类的一部分,因此要访问它,您必须先访问该类。

class myClass:
    def foo(self):
        # do something

myClass().foo()

如果您只不想输入myClass().foo(),而只想输入foo,则可以在名为myClass()的新函数中返回foo()

def foo():
    return  myClass().foo()

从类本身内部调用时,您可以在类中使用self

class myClass:
    def __init__(self):
        pass
    def foo(self):
        pass
    def method2(self):
        self.foo()

这不会像调用myClass那样创建myClass().foo()的新实例,并且您不需要传递与myClass中传递的参数相同的参数。

答案 1 :(得分:0)

由于foo()具有一个self参数,这意味着它是 instance方法,因此只能从 instance 中调用myClass

如果希望foo可以在没有实例的情况下被调用,请使用@staticmethod装饰器,然后从参数列表中删除self