假设我有以下内容:
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
的错误。
答案 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
。