【问题标题】:Function definition in PythonPython中的函数定义
【发布时间】:2010-10-17 18:19:35
【问题描述】:

我是 Python 新手。我试图在一个类中定义和运行一个简单的函数。

谁能告诉我我的代码有什么问题:

class A :
    def m1(name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)


>>> a = A()
>>> a.m1('X',12,'XXXX')
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    a.m1('X',12,'XXXX')

我遇到错误
TypeError: m1() 正好需要 3 个位置参数(给定 4 个)

【问题讨论】:

    标签: python


    【解决方案1】:

    实例方法将实例作为第一个参数:

    class A :
        def m1(self, name,age,address) :
            print('Name -->',name)
            print('Age -->',age)
            print('Address -->',address)
    

    你也可以使用@staticmethod decorator创建静态函数:

    class A :
        @staticmethod
        def m1(name,age,address) :
            print('Name -->',name)
            print('Age -->',age)
            print('Address -->',address)
    

    【讨论】:

      【解决方案2】:

      第一个参数始终是对象本身。

      class A :
          def m1(self, name,age,address) :
              print('Name -->',name)
              print('Age -->',age)
              print('Address -->',address)
      

      【讨论】:

        【解决方案3】:

        按照惯例,类实例中的方法接收对象引用作为第一个参数,命名为self

        >>> class A:
        ...     def m1(self,name,age,address):
        ...         print('Name -->',name)
        ...         print('Age -->',age)
        ...         print('Address -->',address)
        ...         
        >>> a=A()
        >>> a.m1('X',12,'XXXX')
        ('Name -->', 'X')
        ('Age -->', 12)
        ('Address -->', 'XXXX')
        >>> 
        

        【讨论】:

        • 那不是类方法,那是实例方法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-13
        • 2017-08-30
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        相关资源
        最近更新 更多