我有以下示例设置:Python类继承初始化
class Feet:
def __init__ (self, value = 0.0):
self.value = value
self.units = "f"
def feet(self):
return self.value
class Meters:
def __init__(self, value = 0.0):
self.value = value
self.units = "m"
def feet(self):
# This is probably not an accurate conversion.
return self.value * 2.54 * 10
class Distance (Feet, Meters):
def __init__(self, type = Feet()):
Feet.__init__(self)
Meters.__init__(self)
print type.feet() -- Prints 254.0
self = type
print self.feet() -- Prints 254.0
dist = Distance(Meters(10.0))
print dist.units -- Prints = "m"
print dist.value -- Prints = 0.0
print dist.feet() -- Prints = 0.0
我似乎无法理解为什么当我初始化类的米类类型,并指定10.0,我不守10.0。然而单位似乎保持正确。我是否错过了关于如何设置的内容?
我的理解是,我正在创建Meters的“实例”,并将其分配给Distance的“self”变量。如果自我价值无法修改,我可以理解我的单位是否为“f”,但我的单位是“m”,因此显然将Meters类分配给自己,但它没有采用实例化的值,我发现它很奇怪。
说实话我甚至不知道我会在这种情况下谷歌,所以我很抱歉我没有做很多谷歌搜索,大部分我发现并不适用于这种类型的问题。
此外,我的计划是基本上将它“铸造”为相同类型,无论您通过哪种方式,例如对于脚,我将返回Feet类的自实例,并且在Meters类中,我将返回Feet (self.Value * 2.54 * 10)所以我会永远有我的脚距离。
所以脚脚变得
def feet(self):
return self
为米英尺变得
def feet(self):
return Feet(self.value * 2.54 * 10)
重述一遍,有没有我可以在1 2类通过在初始化过程中的理由,但它不需要我的初始化参数为该类?
我真的不清楚为什么我可以在距离类中指定“自我”,并在返回之前出现有正确的初始化,但返回后它不起作用。
您正在重新定义所有方法。你的前两个类有相同的方法。您从两者继承,所以第二个类的方法覆盖第一个类的方法 – Paco