Discuss / Python / 如果多重继承的父类有相同的方法

如果多重继承的父类有相同的方法

Topic source

王新美男

#1 Created at ... [Delete] [Delete and Lock User]
Traceback (most recent call last):
  File "/Users/wangxinyu/Desktop/wxy/OPPHight/test3.py", line 43, in <module>
    dog.run()
TypeError: run() takes no arguments (1 given)
[Finished in 0.1s with exit code 1]

会报错误.. 目前不知道有什么好办法解决。

所以只能靠自己避免这种错误。

预言星光

#2 Created at ... [Delete] [Delete and Lock User]

如果class Manmmal中存在run方法,class RunnableMixIn中也存在run方法,那么的定义子类的时候,为顺序优先级。也就是说 class Dog(Mammal, RunnableMixIn) pass husky = Dog() husky.run

与 class Dog(RunnableMixIn, Mammal) pass husky = Dog() husky.run

两者输出不同,你自己可以试试。

预言星光

#3 Created at ... [Delete] [Delete and Lock User]

另外你那个报错是因为run方法没有加self参数吧。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

#如果多重继承的父类有相同的方法
class Manmmal(object):
    def run(self):
        print('Manmmal')

class Runnable(object):
    def run(self):
        print('Runnable')

class Dog(Runnable,Manmmal):
    pass

d=Dog()
d.run()#如果Runnable在前,输出Runnable,反之输出Manmmal

  • 1

Reply