【发布时间】:2019-03-10 19:22:16
【问题描述】:
我正在用 Python 修改 OOP,并尝试从另一个子类继承属性,但我不知道如何或是否有可能。这是我目前所拥有的:
class Employee:
def __init__(self, first, last, pay):
self.first = first
self.last = last
self.pay = pay
def increase_pay(self, multiplier):
self.pay = int(self.pay * multiplier)
class Developer(Employee):
def __init__(self, first, last, pay, prog_lang):
Employee.__init__(self, first, last, pay)
self.prog_lang = prog_lang
self.email = first.lower() + '.' + last.lower() + '@outlook.com'
class BetaTester(Employee, Developer):
def __init__(self, first, last, pay, prog_lang, platform):
self.platform = platform
我收到的错误是:
Traceback (most recent call last):
File "main.py", line 33, in <module>
class BetaTester(Employee, Developer):
TypeError: Cannot create a consistent method resolution
order (MRO) for bases Employee, Developer
【问题讨论】:
-
您遇到了什么具体错误?理想情况下,一个好的minimal reproducible example 应该只包含演示特定问题所需的最短代码——如果任何给定的行对于表达你的观点不是必不可少的,那么该行(以及任何依赖它的行)不应该在这里。
-
@CharlesDuffy 抱歉,我是新来的(第一篇文章)。让我将错误添加到帖子中!
-
谢谢——这很有帮助! (现有答案可以正确猜测问题所在,但在问题中显示它可以帮助其他人跟进,并使有相同问题的其他人更容易搜索您的问题及其答案)。
-
顺便说一句,就这仅在 Python 3 中发生的情况而言,我为该语言版本添加了一个标签;并且由于只需要类定义来重现问题,因此我取消了其他所有内容。
标签: python python-3.x oop inheritance