I am new to Python and I have written this simple script:
#!/usr/bin/python3
import sys
class Hello:
def printHello():
print(\'Hello!\')
def ma
Calling a method on the instance of an object returns the object itself (usually self
) to the object. For example, calling Hello().printHello()
is the same as calling Hello.printHello(Hello())
, which uses an instance of a Hello
object as the first argument.
Instead, define your printHello
statement as def printHello(self):
If you want printHello
as instance method, it should receive self as argument always(ant python will pass implicitly) Unless you want printHello
as a static method, then you'll have to use @staticmethod
#!/usr/bin/python3
import sys
class Hello:
def printHello(self):
print('Hello!')
def main():
helloObject = Hello()
helloObject.printHello() # Here is the error
if __name__ == '__main__':
main()
As '@staticmethod'
#!/usr/bin/python3
import sys
class Hello:
@staticmethod
def printHello():
print('Hello!')
def main():
Hello.printHello() # Here is the error
if __name__ == '__main__':
main()
The error is referring to the implicit self
argument that is passed implicitly when calling a method like helloObject.printHello()
. This parameter needs to be included explicitly in the definition of an instance method. It should look like this:
class Hello:
def printHello(self):
print('Hello!')