takes no arguments (1 given)” but I gave none

前端 未结 3 745
走了就别回头了
走了就别回头了 2020-12-15 04:39

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         


        
相关标签:
3条回答
  • 2020-12-15 05:25

    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):

    0 讨论(0)
  • 2020-12-15 05:27

    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()
    
    0 讨论(0)
  • 2020-12-15 05:35

    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!')
    
    0 讨论(0)
提交回复
热议问题