我有以下示例设置:
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
我似乎无法理解为什么当我将类初始化为 Meters Class 类型并为其分配 10.0 时,我不保留 10.0。然而,单位似乎保持正确。我是否缺少有关如何设置的信息?
我的理解是我正在创建米的“实例”,并将其分配给距离的“自我”变量。如果无法修改 self 值,我可以理解我的单位是否为“f”,但我的单位为“m”,因此显然将 Meters 类分配给 self,但它没有采用实例化值,我觉得这很奇怪.
老实说,我什至不知道在这种情况下我会谷歌什么,所以我很抱歉我没有做很多谷歌搜索,我发现的大部分内容根本不适用于这类问题。
此外,我的计划是基本上将它“转换”为相同的类型,无论你传入什么,例如对于 feet 我会返回 Feet 类的 self 实例,在 Meters 类中我会返回 Feet(self.Value * 2.54 * 10) 所以我的距离总是以英尺为单位。
所以对于 Feet 脚变成
def feet(self):
return self
米英尺变成
def feet(self):
return Feet(self.value * 2.54 * 10)
回顾一下,作为初始化的一部分,我是否可以传入 2 个类中的 1 个,但它不接受该类的初始化参数?
我真的不清楚为什么我可以在距离类中分配“自我”,并且在它返回之前它似乎有正确的初始化但在返回时它不能正常工作。