在Python中,为什么类方法会覆盖实例方法?

下马

请参见下面的代码:

class MyClass:

    # instance method.
    def printline(self):
        print('This is an instance method!')

    @classmethod
    def printline(cls):
        print('This is a class method!')


# class MyClass ends.

obj = MyClass()
obj.printline()

输出:

This is a class method!

那么,为什么类方法会覆盖实例方法呢?忽略了我们可以简单地更改方法之一的名称这一事实,如何在上述代码中访问实例方法?

阿伦·卡莱拉贾·巴斯卡兰(Arun Kaliraja Baskaran)

该函数的最新定义将掩盖前一个函数。如果实例方法的定义类似于下面的第二个示例,则将调用它:

    In [1]: class MyClass:
       ...:
       ...:     # instance method.
       ...:     def printline(self):
       ...:         print('This is an instance method!')
       ...:
       ...:     @classmethod
       ...:     def printline(cls):
       ...:         print('This is a class method!')
       ...:

    In [2]: m =  MyClass()
    
    In [3]: m.printline()
    This is a class method!
    
    In [4]: class MyClass1:
       ...:
       ...:     @classmethod
       ...:     def printline(cls):
       ...:         print('This is a class method!')
       ...:
       ...:     # instance method.
       ...:     def printline(self):
       ...:         print('This is an instance method!')

    In [5]: m1 = MyClass1()
    
    In [6]: m1.printline()
    This is an instance method!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么 append 方法会修改 python 类中的变量?

为什么我的方法会覆盖数组中的位置

ADAL iOS:类别中的实例方法会覆盖类中的方法(链接器警告)

为什么方法会改变这个类的属性?(Python)

为什么在派生类中调用方法会调用基类方法?

覆盖edtitext的getText()方法会导致stackoverflow,为什么?

为什么Moose Role方法会覆盖父母定义?

为什么 PyQt 类的反弹方法会引发 TypeError

为什么addDomain方法会影响域的超类

为什么在Python的实例方法上使用类方法

为什么实例方法在Python 3中被称为类方法?

覆盖类实例的方法?

为什么类方法中的此实例变量赋值不会导致 Python 中的 UnboundLocalError

为什么toBinaryString不是Integer类中的实例方法?

为什么GET方法会在物件中传回物件

为什么在Python中对数字文字调用方法会导致语法错误?

调用类方法会在Python中引发TypeError

为什么不允许子类覆盖方法会导致创建不可变对象?

为什么模拟后方法会执行?

为什么该方法会删除线?

为什么 readLong 方法会导致 EOFException?

为什么绑定类实例方法与绑定类方法不同?

为什么从基类调用方法会调用子方法?

为什么Queue的方法会引发异常,而其他Collection的类却不会?

为什么在 Ruby 类之外调用方法会引发 NoMethod 错误以及如何修复它?

为什么将参数传递给 lua 类方法会变为零

为什么仅在枚举常量的可选类体内执行接口方法会导致编译错误?

为什么子类对象使用的父类方法会导致错误?

在Python的类方法中调用实例方法