我是Python新手,我编写了一个简单的脚本:
#!/usr/bin/python3
import sys
class Hello:
def printHello():
print('Hello!')
def main():
helloObject = Hello()
helloObject.printHello() # Here is the error
if __name__ == '__main__':
main()
当我运行它(./hello.py
)时,会收到以下错误消息:
Traceback (most recent call last): File "./hello.py", line 13, in <module> main() File "./hello.py", line 10, in main helloObject.printHello() TypeError: printHello() takes no arguments (1 given)
为什么Python认为我给了printHello()
一个参数,而我显然没有?我做错了什么?
如果您想将
printHello
作为实例方法,那么它应该始终接收self-as参数(ant python将隐式传递),除非您想将printHello
作为静态方法,否则您必须使用@staticmethod
作为“@staticmethod”
错误是指在调用类似
helloObject.printHello()
的方法时隐式传递的隐式self
参数。此参数需要显式地包含在实例方法的定义中。应该是这样的:对对象实例调用方法会将对象本身(通常是
self
)返回给对象。例如,调用Hello().printHello()
与调用Hello.printHello(Hello())
相同,后者使用Hello
对象的实例作为第一个参数。相反,将
printHello
语句定义为def printHello(self):
相关问题 更多 >
编程相关推荐