Python:父类无法识别其子类的__init__

时间:2018-11-20 06:15:04

标签: python inheritance

我一直在处理继承,但是对于为什么我的父类无法识别子类的 init 感到困惑。这是我的代码示例,该代码在运行,不运行时不给我任何帮助。

class Coins(object):
    def make_change(self, amount):
        change = []
        for coin in (self._coins):
            change.append(amount // coin)
            amount = amount - change[-1] * coin 
class US_Coins(Coins):
    def __init__(self):
        self._coins = [50, 25, 10, 5, 1]
class Metric_Coins(Coins):
    def __init__(self):
        self._coins = [50, 20, 10, 5, 2, 1]
metric = Metric_Coins()
us = US_Coins()
print(us.make_change(73))
print(metric.make_change(73))
coins = Coins()
print(coins.make_change(27))

1 个答案:

答案 0 :(得分:1)

您需要在self._coins类中定义Coins字段。没有它,函数make_change将无法执行,因为它会调用此父类(for coin in (self._coins))中不存在的字段。

已编辑:为了实现您的目标,您需要在Coins类内创建一个字段:

class Coins(object):

    def __init__self():
        self._coins = []

    def make_change(self, amount):
        change = []
        for coin in (self._coins):
            change.append(amount // coin)
            amount = amount - change[-1] * coin 


class US_Coins(Coins):

    def __init__(self):
        self._coins = [50, 25, 10, 5, 1]


class Metric_Coins(Coins):

    def __init__(self):
        self._coins = [50, 20, 10, 5, 2, 1]


metric = Metric_Coins()
us = US_Coins()
print(us.make_change(73))
print(metric.make_change(73))
coins = Coins()
print(coins.make_change(27))

现在,您可以在美国和指标上使用make_change方法进行操作;以及硬币对象。