次のセットアップ例があります。
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 を保持しないのか理解できないようです。ただし、単位は正しいままのようです。これがどのようにセットアップされているかについて何か不足していますか?
私の理解では、メーターの「インスタンス」を作成し、それを距離の「自己」変数に割り当てています。自己値を変更できなかった場合、単位が「f」であるかどうかを理解できましたが、単位が「m」であるため、明らかにメータークラスを自己に割り当てていますが、インスタンス化された値を取得していません。これは非常に奇妙です.
正直に言うと、この場合に何をグーグルで検索するかさえわからないので、グーグルであまり検索していないことをお詫びします。見つかったもののほとんどは、この種の問題にはまったく当てはまりませんでした。
さらに、私の計画は、基本的に、何を渡しても同じタイプに「キャスト」することでした。たとえば、フィートの場合、Feet クラスの自己インスタンスを返し、Meters クラスでは Feet(self.Value を返します。 * 2.54 * 10) なので、距離は常にフィートで表されます。
フィートの場合、フィートは次のようになります
def feet(self):
return self
メートルフィートの場合は
def feet(self):
return Feet(self.value * 2.54 * 10)
要約すると、初期化の一部として 2 つのクラスのうちの 1 つを渡すことができるのに、そのクラスの初期化パラメーターを使用できない理由はありますか?
距離クラスで「自己」を割り当てることができる理由は本当に不明であり、返される前は正しい初期化が行われているように見えますが、返されると正しく機能しません。