我有以下示例設置: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